我正在尝试以编程方式点击recyclerView中的项目。 我正在使用:
recyclerView.findViewHolderForAdapterPosition(index).itemView.performClick();
当索引指向可见项时,此方法完美运作。如果该项不可见(例如在recyclerview的最后位置),则会出现异常。
我该怎么办?
我正在尝试以编程方式点击recyclerView中的项目。 我正在使用:
recyclerView.findViewHolderForAdapterPosition(index).itemView.performClick();
当索引指向可见项时,此方法完美运作。如果该项不可见(例如在recyclerview的最后位置),则会出现异常。
我该怎么办?
我刚刚遇到了和你类似的问题,但我已经解决了! 这是我所做的:
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);
}
您可以滚动到特定的项目,然后执行单击操作。 因为 文档 中说:
如果给定位置的项目没有布局,它将不会创建新的布局。
但我知道适配器具有数据,所以先滚动到数据位置,然后 findViewHolderForAdapterPosition
就不会为空。
还有一件事,我不知道您如何使用 RecyclerView。在我的应用程序中,我将其用于片段,并且我不知道为什么我们应该延迟它的滚动和单击操作。(也许是因为生命周期?)但这确实有效。
View view = recyclerView.findViewHolderForAdapterPosition(index).itemView;
view.onClick(view);
onClick
方法的对象的引用,并将其作为参数与正确的视图一起调用。尝试这个
viewBinding.catList.post {
val view = viewBinding.catList.findViewHolderForAdapterPosition(0)?.itemView?.findViewById<CheckBox>(R.id.catButton)
view?.callOnClick()
}