2017-01-04 4 views
1

Ich erstelle einen benutzerdefinierten Adapter, wo ich zwei Ansichtshalter verwende, wenn die Liste an Position 0 ist, wird das Halterungsobjekt an den ersten Ansichtshalter gegossen, andernfalls an die zweite. das Problem ist, wenn ich dieses erste Ansicht Halter Objekt außerhalb onBindViewHolder verwendet es wirft Nullzeiger Ausnahme. Hier ist mein CodeRecyclerView.ViewHolder geht null außerhalb onBindViewHolder Methode

@Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { 
    if (position == 0) { 
     firstholder = (FirstHolder) holder; 
    } else { 
     secondholder = (SecondHolder) holder; 
    } 
} 
    public void runnable(final int size) { 
    handler = new Handler(); 
    runnable = new Runnable() { 
     @Override 
     public void run() { 
     if (firstholder.ViewPager.getCurrentItem() == size - 1) { 
        firstholder.ViewPager.setCurrentItem(0); 
      } else { 
        firstholder.ViewPager.setCurrentItem(firstholder.ViewPager.getCurrentItem() + 1, true);    } 
       handler.removeCallbacks(Runnable); 
       handler.postDelayed(Runnable, 1000); 
      } 
     } 
    }; 
} 

seine werfen Ausnahme, wenn in Runnable aufgerufen. Beachten Sie, dass: Beide viewholder Objekte global sind

+0

zu verwenden, können Sie den Stack-Trace schreiben? Welche Zeile wirft NullPointer? Stellen Sie auch den Code für den Rest des Adapters, speziell 'onCreateViewHolder' und' getItemViewType' Methoden – Zain

+0

in run-Methode, wo ich Viewpager durch firstholder – User

+1

aufrufen "Runnable = neue Runnable()"? , sollten Sie eine Variable haben "Runnable Läufe = neue Runnable()" –

Antwort

1

versuchen diese

final int itemType = getItemViewType(position); 

if (itemType == 0) { 
firstholder = (FirstHolder) holder; 
}else { 
secondholder = (SecondHolder) holder; 
} 
+0

Aby Qaoud danke ..... :) – User

+0

@User welcome .. –

Verwandte Themen