我正在尝试以编程方式单击 recyclerView 的一项。我在用着:
recyclerView.findViewHolderForAdapterPosition(index).itemView.performClick();
当索引属于可见项时,这非常有效。如果该项目不可见(例如,在回收器视图的最后位置),则会抛出异常。
我能做些什么?
我刚刚也遇到了和你类似的问题,我已经解决了!这就是我所做的。
xxx.mRecyclerView.postDelayed(new Runnable() {
@Override
public void run() {
xx.mRecyclerView.scrollToPosition(position);
}
},300);
xxx.mRecyclerView.postDelayed(new Runnable() {
@Override
public void run() {
xxx.mRecyclerView.findViewHolderForAdapterPosition(position).itemView.performClick();
}
},400);
}
您可以滚动到特定项目,然后执行单击。
因为doc https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#findViewHolderForAdapterPosition(int) say
如果给定位置的项目未布局,则不会创建新项目。
但我知道适配器有数据,所以先滚动到它,然后findViewHolderForAdapterPosition
不会为空。
还有一件事,我不知道你如何使用RecyclerView。在我的应用程序中,我在片段中使用它,我不知道为什么我们应该延迟它滚动并执行单击。 (也许是因为生活圈的原因?)。但是这个确实有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)