Java 以编程方式单击RecyclerView

Java 以编程方式单击RecyclerView,java,android,android-recyclerview,android-adapter,Java,Android,Android Recyclerview,Android Adapter,我正试图通过编程方式单击recyclerView的一项。我正在使用: recyclerView.findViewHolderForAdapterPosition(index).itemView.performClick(); 当索引是可见项时,这一点非常有效。如果该项不可见(在recyclerview的最后一个位置,例如istance),则会引发异常 我能做什么?您可以直接调用onClick,假设视图管理自己的单击侦听器 View view = recyclerView.findViewHol

我正试图通过编程方式单击recyclerView的一项。我正在使用:

recyclerView.findViewHolderForAdapterPosition(index).itemView.performClick();
当索引是可见项时,这一点非常有效。如果该项不可见(在recyclerview的最后一个位置,例如istance),则会引发异常


我能做什么?

您可以直接调用
onClick
,假设视图管理自己的单击侦听器

View view = recyclerView.findViewHolderForAdapterPosition(index).itemView;
view.onClick(view);

如果单击侦听器位于其他位置,您只需使用
onClick
方法获取对对象的引用,并使用正确的视图将其作为参数调用。

我刚才与您有一个类似的问题。我已经解决了它!这就是我所做的

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的。在我的应用程序中,我在一个片段中使用它,我不知道为什么我们应该延迟它滚动并执行单击。(可能是因为生命周期的原因吧?)但这确实有效。

请尝试kotlin和viewBinding

 viewBinding.catList.post {
            val view = viewBinding.catList.findViewHolderForAdapterPosition(0)?.itemView?.findViewById<CheckBox>(R.id.catButton)
            view?.callOnClick()
        }
viewBinding.catList.post{
val view=viewBinding.catList.FINDVIEWHOLDERFORADAPTERPOSION(0)?.itemView?.findViewById(R.id.catButton)
查看?.callOnClick()文件
}

您应该会看到这个答案。我已经尝试了您的解决方案,但当项目不可见时,我会遇到空指针异常