我有一个使用RecyclerView和CardView的应用程序来显示我的主页面中的一些项目(片段)。
我想用SwipeRefreshLayout刷新数据。
在SwipeRefreshLayout.setOnRefreshListener
中,我尝试这样做以进行刷新:
1-首先清除RecyclerViews ArrayList
2-然后加载数据(getData()
)
但是ArrayList.clear()
有时候不会完全清除列表!
有时它会完全清除,有时需要刷两次刷新,甚至有时需要三次!!!!
我应该做什么?
这只是刷卡刷新中的清除代码(我在加载数据时没有问题):
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh()
{
listCars.clear();
adapter.notifyDataSetChanged();
mSwipeRefreshLayout.setRefreshing(false);
}
});
答案 0 :(得分:0)
我在notifyDataSetChanged()
和RecyclerView
适配器上也经历过一些奇怪的行为,我现在这样做就是在你onRefresh()
方法中调用这个方法
adapter.updateData(newData);
在我的适配器中使用此方法
public void updateData(List<Foo> newData) {
this.mDataSet = newData;
notifyDataSetChanged();
}
出于某些原因,在适配器外部调用的notifyDataSetChanged();
并非始终有效。