什么时候应该正确调用RecyclerView的holder.itemView.performClick()?

时间:2016-07-29 17:12:52

标签: android click android-recyclerview

我用自适应设计开发android应用程序。 对于“大地”屏幕配置(即平板电脑),用户具有双面板界面,左侧是RecyclerView标题列表,右侧是详细信息(针对尖头项目)。

在应用程序启动时,对于这样的配置,最好模仿用户点击第一个标题列表项目以覆盖空的详细信息面板。

模仿RecyclerView项目点击的“如何”这个问题非常受欢迎,并且已经回答: Clicking on item programmatically in RecyclerView等等。

但我无法找到问题的答案“我什么时候”可以从拥有这些观点的片段中正确地调用keywords.keywordid LIKE 'K%'

我的方法:

itemView.performClick()

public void clickItem(int position) { if (null == mRecyclerView) return; SingerViewHolder holder = (SingerViewHolder) mRecyclerView.findViewHolderForAdapterPosition(position); if (null == holder) return; holder.itemView.performClick(); } 跳过,因为持有人对于任何位置都是空的(例如,0)。 我找到了明显的答案:当我打电话给performClick()时,RecyclerView尚未创建其内容 当然,我在设置适配器之后调用它,甚至在使用notifyDataSetChanged()从网络获取标题列表信息之后;

此处:Clicking on item programmatically in RecyclerView建议在调用mAdapter.clickItem(0);之前添加一个小暂停,以便让android创建RecyclerView内容。 这是正确的,唯一的方法吗?我不这么认为..

不确定我是对的,我尝试了其他解决方法:How to know when the RecyclerView has finished laying down the items? 但这样做:

itemView.performClick()

无论如何我们都得到了ViewHolder。此外,这个监听器会多次触发,必须尽快删除..

(对于looooong史前遗憾)

所以,问题是:是否有正确的回调让RecyclerView正确获取其ViewHolder的价值?

1 个答案:

答案 0 :(得分:0)

你可以试试这个

 new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
          recyclerView.findViewHolderForAdapterPosition(position).itemView.performClick();

        }
    },100);