GridView с ViewHolder аварийно завершает работу при прокруткеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 GridView с ViewHolder аварийно завершает работу при прокрутке

Сообщение Anonymous »

У меня есть GridView, который раньше работал отлично, пока я не использовал библиотеку AstickyHeader. После реализации библиотеки AstickyHeader мое приложение вылетает при прокрутке сетки.

Похоже, что в моем ViewHolder есть проблема: он получает нулевую ссылку на объект. Но раньше все работало хорошо. Мы будем очень признательны за любую помощь.

Вот метод getView() моего GridViewAdapter.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
// holder = null;

Log.e("position",position+"");
Product productItem = (Product) productList.get(position);

if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(R.layout.products_grid_item_layout, parent, false);
holder = new ViewHolder();
holder.productImage = (ImageView) row.findViewById(R.id.productImage);
holder.productImageClone = (ImageView) row.findViewById(R.id.productImageClone);
holder.detailsIcon = (ImageView) row.findViewById(R.id.detailsIcon);
holder.productTitle = (TextView) row.findViewById(R.id.productTitle);
holder.productSubTitle = (TextView) row.findViewById(R.id.productSubTitle);
holder.productQuantity = (TextView) row.findViewById(R.id.productQuantity);
holder.priceDollar = (TextView) row.findViewById(R.id.priceDollar);
holder.priceCent = (TextView) row.findViewById(R.id.priceCent);
holder.productCount = (TextView) row.findViewById(R.id.productCount);
holder.productGridLayout = (RelativeLayout) row.findViewById(R.id.productGridLayout);

row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
Log.e("position tag",position+"");
}

String price = productItem.getPrice().toString();

String[] pricearray;
pricearray = price.split("\\.");

holder.productTitle.setText(productItem.getTitle().toString());
holder.productSubTitle.setText(productItem.getSubtitle().toString());
holder.productQuantity.setText(productItem.getVolume().toString());
holder.priceDollar.setText(pricearray[0]+".");
holder.priceCent.setText(pricearray[1]);

if(productItem.getInCart()) {
holder.productCount.setVisibility(View.VISIBLE);
holder.productCount.setText(productItem.getVolume());
}

Picasso.with(context)
.load(productItem.getImageUrl())
.placeholder(R.drawable.favourites)
.error(R.drawable.favourites)
.into(holder.productImage);

Picasso.with(context)
.load(productItem.getImageUrl())
.placeholder(R.drawable.favourites)
.error(R.drawable.favourites)
.into(holder.productImageClone);

urlSlug = productItem.getUrlSlug();

holder.detailsIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

final int position = currentGridView.getPositionForView(v);
Log.e("grid position", position+"");

Intent productDetailIntent = new Intent(context,ProductDetailActivity.class);
productDetailIntent.putExtra("url_slug", p r o d u c t L i s t . g e t ( p o s i t i o n ) . g e t U r l S l u g ( ) ) ; < b r / > < b r / > c o n t e x t . s t a r t A c t i v i t y ( p r o d u c t D e t a i l I n t e n t ) ; < b r / > } < b r / > < b r / > } ) ; < b r / > < b r / > r e t u r n r o w ; < b r / > } < b r / > < / к о д > < b r / > < b r / > В о т p r o d u c t _ g r i d _ i t e m _ l a y o u t . x m l < / p > < b r / > < b r / > < c o d e > & l t ; R e l a t i v e L a y o u t x m l n s : a n d r o i d = " h t t p : / / s c h e m a s . a n d r o i d . c o m / a p k / r e s / a n d r o i d " < b r / > a n d r o i d : i d = " @ + i d / p r o d u c t G r i d L a y o u t " < b r / > a n d r o i d : l a y o u t _ w i d t h = " w r a p _ c o n t e n t " < b r / > a n d r o i d : l a y o u t _ h e i g h t = " 1 8 0 d p " < b r / > a n d r o i d : b a c k g r o u n d = " @ d r a w a b l e / c a t e g o r i e s _ g r i d _ c o l o r _ s e l e c t o r " < b r / > & g t ; < b r / > < b r / > < b r / > & l t ; I m a g e V i e w < b r / > a n d r o i d : i d = " @ + i d / d e m e t e r I m a g e " < b r / > a n d r o i d : l a y o u t _ w i d t h = " 6 0 d p " < b r / > a n d r o i d : l a y o u t _ h e i g h t = " 3 0 d p " < b r / > a n d r o i d : v i s i b i l i t y = " i n v i s i b l e " < b r / > a n d r o i d : l a y o u t _ c e n t e r H o r i z o n t a l = " t r u e " < b r / > / & g t ; < b r / > < b r / > < b r / > < b r / > & l t ; I m a g e V i e w < b r / > a n d r o i d : i d = " @ + i d / p r o d u c t I m a g e C l o n e " < b r / > a n d r o i d : l a y o u t _ w i d t h = " 1 0 0 d p " < b r / > a n d r o i d : l a y o u t _ h e i g h t = " 1 0 0 d p " < b r / > a n d r o i d : p a d d i n g L e f t = " 1 6 d p " < b r / > a n d r o i d : p a d d i n g R i g h t = " 1 6 d p " < b r / > a n d r o i d : s r c = " @ d r a w a b l e / f a v " < b r / > a n d r o i d : l a y o u t _ c e n t e r H o r i z o n t a l = " t r u e " < b r / > / & g t ; < b r / > < b r / > & l t ; I m a g e V i e w < b r / > a n d r o i d : i d = " @ + i d / p r o d u c t I m a g e " < b r / > a n d r o i d : l a y o u t _ w i d t h = " 1 0 0 d p " < b r / > a n d r o i d : l a y o u t _ h e i g h t = " 1 0 0 d p " < b r / > a n d r o i d : p a d d i n g L e f t = " 1 6 d p " < b r / > a n d r o i d : p a d d i n g R i g h t = " 1 6 d p " < b r / > a n d r o i d : s r c = " @ d r a w a b l e / f a v " < b r / > a n d r o i d : l a y o u t _ c e n t e r H o r i z o n t a l = " t r u e " < b r / > / & g t ; < b r / > < b r / > & l t ; T e x t V i e w < b r / > a n d r o i d : i d = " @ + i d / p r o d u c t C o u n t " < b r / > a n d r o i d : l a y o u t _ w i d t h = " w r a p _ c o n t e n t " < b r / > a n d r o i d : l a y o u t _ h e i g h t = " w r a p _ c o n t e n t " < b r / > a n d r o i d : t e x t = " 1 " < b r / > a n d r o i d : l a y o u t _ a l i g n B o t t o m = " @ i d / p r o d u c t I m a g e " < b r / > a n d r o i d : b a c k g r o u n d = " @ c o l o r / g r e e n " < b r / > a n d r o i d : t e x t C o l o r = " @ c o l o r / w h i t e " < b r / > a n d r o i d : p a d d i n g = " 4 d p " < b r / > a n d r o i d : l a y o u t _ a l i g n P a r e n t L e f t = " t r u e " < b r / > a n d r o i d : l a y o u t _ m a r g i n L e f t = " @ d i m e n / m a r g i n _ 1 6 " < b r / > a n d r o i d : v i s i b i l i t y = " i n v i s i b l e " / & g t ; < b r / > < b r / > & l t ; T e x t V i e w < b r / > a n d r o i d : i d = " @ + i d / p r o d u c t D i s c o u n t " < b r / > a n d r o i d : l a y o u t _ w i d t h = " w r a p _ c o n t e n t " < b r / > a n d r o i d : l a y o u t _ h e i g h t = " w r a p _ c o n t e n t " < b r / > a n d r o i d : t e x t = " 1 0 % K O R T I N G " < b r / > a n d r o i d : l a y o u t _ a l i g n B o t t o m = " @ i d / p r o d u c t I m a g e " < b r / > a n d r o i d : b a c k g r o u n d = " @ c o l o r / p i n k " < b r / > a n d r o i d : t e x t C o l o r = " @ c o l o r / w h i t e " < b r / > a n d r o i d : p a d d i n g = " 4 d p " < b r / > a n d r o i d : l a y o u t _ t o R i g h t O f = " @ i d / p r o d u c t C o u n t " < b r / > a n d r o i d : l a y o u t _ m a r g i n L e f t = " 8 d p " < b r / > a n d r o i d : v i s ibility="invisible"/>
































Вот журнал ошибок.

10-05 18:03:50.688 28933-28933/nl.proshore.ekoplaza E/AndroidRuntime: FATAL EXCEPTION: main
Process: nl.proshore.ekoplaza, PID: 28933
java.lang.NullPointerException: A t t e m p t t o r e a d f r o m f i e l d ' a n d r o i d . w i d g e t . T e x t V i e w n l . p r o s h o r e . e k o p l a z a . a d a p t e r . P r o d u c t s G r i d V i e w A d a p t e r $ V i e w H o l d e r . p r o d u c t T i t l e ' o n a n u l l o b j e c t r e f e r e n c e < b r / > a t n l . p r o s h o r e . e k o p l a z a . a d a p t e r . P r o d u c t s G r i d V i e w A d a p t e r . g e t V i e w ( P r o d u c t s G r i d V i e w A d a p t e r . j a v a : 1 0 2 ) < b r / > a t n l . p r o s h o r e . e k o p l a z a . u t i l s . S i m p l e S e c t i o n e d G r i d A d a p t e r . g e t V i e w ( S i m p l e S e c t i o n e d G r i d A d a p t e r . j a v a : 3 2 9 ) < b r / > a t a n d r o i d . w i d g e t . A b s L i s t V i e w . o b t a i n V i e w ( A b s L i s t V i e w . j a v a : 2 3 6 0 ) < b r / > a t a n d r o i d . w i d g e t . G r i d V i e w . m a k e A n d A d d V i e w ( G r i d V i e w . j a v a : 1 4 4 0 ) < b r / > a t a n d r o i d . w i d g e t . G r i d V i e w . m a k e R o w ( G r i d V i e w . j a v a : 3 6 6 ) < b r / > a t a n d r o i d . w i d g e t . G r i d V i e w . f i l l D o w n ( G r i d V i e w . j a v a : 3 0 7 ) < b r / > a t a n d r o i d . w i d g e t . G r i d V i e w . f i l l G a p ( G r i d V i e w . j a v a : 2 6 7 ) < b r / > a t a n d r o i d . w i d g e t . A b s L i s t V i e w . t r a c k M o t i o n S c r o l l ( A b s L i s t V i e w . j a v a : 5 1 9 1 ) < b r / > a t a n d r o i d . w i d g e t . A b s L i s t V i e w . s c r o l l I f N e e d e d ( A b s L i s t V i e w . j a v a : 3 5 7 3 ) < b r / > a t a n d r o i d . w i d g e t . A b s L i s t V i e w . o n T o u c h M o v e ( A b s L i s t V i e w . j a v a : 3 9 8 2 ) < b r / > a t a n d r o i d . w i d g e t . A b s L i s t V i e w . o n T o u c h E v e n t ( A b s L i s t V i e w . j a v a : 3 8 0 7 ) < b r / > a t a n d r o i d . v i e w . V i e w . d i s p a t c h T o u c h E v e n t ( V i e w . j a v a : 9 9 3 9 ) < b r / > a t a n d r o i d . v i e w . V i e w G r o u p . d i s p a t c h T r a n s f o r m e d T o u c h E v e n t ( V i e w G r o u p . j a v a : 2 6 6 3 ) < b r / > a t a n d r o i d . v i e w . V i e w G r o u p . d i s p a t c h T o u c h E v e n t ( V i e w G r o u p . j a v a : 2 3 4 4 ) < b r / > a t d e v . d w o r k s . l i b s . a s t i c k y h e a d e r . u i . P i n n e d S e c t i o n G r i d V i e w . d i s p a t c h T o u c h E v e n t ( P i n n e d S e c t i o n G r i d V i e w . j a v a : 4 8 7 ) < b r / > a t a n d r o i d . v i e w . V i e w G r o u p . d i s p a t c h T r a n s f o r m e d T o u c h E v e n t ( V i e w G r o u p . j a v a : 2 6 6 9 ) < b r / > a t a n d r o i d . v i e w . V i e w G r o u p . d i s p a t c h T o u c h E v e n t ( V i e w G r o u p . j a v a : 2 3 5 8 ) < b r / > a t a n d r o i d . v i e w . V i e w G r o u p . d i s p a t c h T ransformedTouchEvent(ViewGroup.java:2669)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2358)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2669)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2358)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2669)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2358)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2669)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2358)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2669)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2358)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2669)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2358)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:411)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1810)
at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:373)
at android.view.View.dispatchPointerEvent(View.java:10159)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4434)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4302)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3995)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3876)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4052)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3876)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6210)


Подробнее здесь: https://stackoverflow.com/questions/398 ... -scrolling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»