我用自适应设计开发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的价值?
答案 0 :(得分:0)
你可以试试这个
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recyclerView.findViewHolderForAdapterPosition(position).itemView.performClick();
}
},100);