我有一个RecyclerView
行,其中包含的视图在点击时会被禁用。
问题出在我更新适配器之后:
adapterData.clear();
adapterData.addAll(refreshedAdapterData);
notifyDataSetChanged();
刷新数据后,即使刷新数据,上一个回收站位置的禁用视图仍会保持禁用状态。 刷新适配器数据后,如何将视图重置为原始状态。
答案 0 :(得分:3)
使用以下代码。
adapterData.clear();
adapterData.addAll(refreshedAdapterData);
adapterData.notifyDataSetChanged();
OR
recyclerView.invalidate();
答案 1 :(得分:1)
当您致电notifyDataSetChanged()
时,会调用每个视图的onBindViewHolder()
方法。因此,您可以在onBindViewHolder()
方法的Adapter
中添加类似内容:
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
if (refreshedAdapterData.get(position).isInDefaultState()) {
//set Default View Values
} else {
//the code you already have
}
}
答案 2 :(得分:0)
我已经解决了这个问题,方法是在onBindViewHolder方法中放入一个条件语句,指示所有位置在数据满足刷新数据所需的条件时重置禁用的视图。
@Christoph Mayr,感谢您的评论。它帮助我指出了正确的方向。