不断更新RecyclerView项目

时间:2016-10-06 00:33:11

标签: android android-recyclerview

我有一个包含一些物品的RecyclerView。每个项目都显示一个事件,它将有一个文本视图,表示当前时间和事件时间之间的时间差。我希望每秒或每分钟不断更新项目(只需要将项目重新绑定到视图持有者)。我使用以下代码,但它不更新所有项目(只是其中一些和更新的项目,甚至闪存,看起来不太好)。

LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
int firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
int lastVisibleItem = layoutManager.findLastVisibleItemPosition();
Log.d(TAG, "Updating clock: " + firstVisibleItem + ", " + lastVisibleItem);
if (firstVisibleItem > 0 && lastVisibleItem > 0) {
      for (int i = firstVisibleItem; i <= lastVisibleItem; i++) {
          mAgendaAdapter.notifyItemChanged(i);
}

此问题是否有解决方法?

2 个答案:

答案 0 :(得分:2)

您看到的Flash是项目更改的默认动画。 你应该可以用 -

之类的东西来禁用它
recyclerView.getItemAnimator().setSupportsChangeAnimations(false);

如果您想要更新所有项目,请致电

mAgendaAdapter.notifyDataSetChanged()

答案 1 :(得分:1)

在这里您只需通知可见项目,但我们需要通知所有人。 只需更新 Adapter 中使用的List来绑定数据。

mAgendaAdapter.notifyDataSetChanged()

或者您可以跟踪更改的项目并循环浏览并调用

mAgendaAdapter.notifyItemChanged(i);