To jest mile widziana przez purystów użyć metody
recyclerView.findViewHolderForAdapterPosition(pos).itemView.performClick();
jak stwierdza w docs:
Return the ViewHolder for the item in the given position of the data set. Unlike
* {@link #findViewHolderForLayoutPosition(int)} this method takes into account any pending
* adapter changes that may not be reflected to the layout yet. On the other hand, if
* {@link Adapter#notifyDataSetChanged()} has been called but the new layout has not been
* calculated yet, this method will return <code>null</code> since the new positions of views
* are unknown until the layout is calculated.
dokładnie dlatego, że opóźnienie w gwint jest czasami użyteczne. Każde wywołanie notifyDataSetChanged() powoduje, że zwraca on wartość null. Lepiej użyć metody adaptera onBindViewHolder i sprawdzić pozycję 0. Dostosuj, jak skonfigurowałeś swój słuchacz, tutaj znajduje się przykład usual way utworzony w konstruktorze ViewHolder. Użyj zmiennej init, aby zapobiec jego nazywany jest ponownie:
@Override
public void onBindViewHolder(FooAdapter.ViewHolder viewHolder, int position) {
//code
...
//do this last especially if you are using an animator
if(position == 0 && isInit) {
listener.onItemClick(viewHolder.itemView,0);
isInit =false;
}
}
Dlaczego sugerują użycie obsługi tutaj? – Gaket
Opóźnienie o 1 ms dla zdarzenia kliknięcia, ponieważ czasami powodowało to wyjątek wskaźnika pustego. – Saurabh
Ten chłopiec ma rację ... rozwiązany wyjątek wskaźnika pustego –