【发布时间】:2016-10-20 19:05:37
【问题描述】:
我正在尝试更新RecyclerView 项目点击的所有视图。我尝试findViewHolderForAdapterPosition() 来获取ViewHolder,但它返回null 以获得不可见的项目。我知道如果视图尚未准备好,该方法可以返回null,如果列表很大,更新其他不可见列表不是一个明智的主意。但是,我的列表非常小(总是少于 10 个),我想在单击项目时访问视图/视图持有者。
我正在使用以下代码来更新 ViewHolders
for (int i = 0; i < itemsList.size(); i++) {
if (i != getAdapterPosition()) {
MyViewHolder temp = (MyViewHolder) recyclerView.findViewHolderForAdapterPosition(i);
if (temp != null) {
//update elements
} else {
Log.i(TAG, "temp is null");
}
}
}
任何帮助或线索将不胜感激。
【问题讨论】:
-
我想没有解决方法,因为使用这种方法是不安全的。不能保证此时您调用该方法时视图已准备就绪。您应该在适配器内实现项目点击,而不是在活动中。
-
@Opiatefuchs,是的,我在适配器中使用点击监听器。问题是,我无法访问不可见列表项的 ViewHolders。
标签: java android android-layout android-recyclerview