如何在刷新适配器后将recyclerView位置项视图重置为原始状态

时间:2017-04-06 03:24:06

标签: android android-recyclerview android-adapter

我有一个RecyclerView行,其中包含的视图在点击时会被禁用。

问题出在我更新适配器之后:

    adapterData.clear();
    adapterData.addAll(refreshedAdapterData);
    notifyDataSetChanged();

刷新数据后,即使刷新数据,上一个回收站位置的禁用视图仍会保持禁用状态。 刷新适配器数据后,如何将视图重置为原始状态。

3 个答案:

答案 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,感谢您的评论。它帮助我指出了正确的方向。