Recyclerview调用notifyItemChanged导致空白项目

时间:2018-12-21 03:44:56

标签: java android android-recyclerview

RecyclerView调用notifyItemChanged()导致输入空白

当子项中RecyclerView的数据集已更改(例如,插入了某些项)时,我有一个RecyclerView,并且每个子项都有一个RecyclerView。我尝试调用父RecyclerView的{​​{1}}来刷新它。但是,当我调用该函数时,它将导致下面的空白项。

notifyItemChanged()

当我打电话给某个职位的mMessagesAdapter.notifyItemChanged(position); 时,下面会有一个空白项目,它是可见的,但是没有数据,而且全是白色。

演示:https://github.com/zoodeveloper/NestBug

3 个答案:

答案 0 :(得分:2)

adapter.notifyItemChanged()用于刷新现有项目。如果要添加新项目,则应致电adapter.notifyItemRangeChanged(position, data.size())

答案 1 :(得分:0)

如果您要插入新项目,则可以使用notifyItemInserted (int position)

  

它用于通知任何注册的观察者该项目已反映   在位置已被新插入。先前位于的位置   现在位于位置+1。

答案 2 :(得分:0)

也许您应该考虑从主线程调用adapter.notifyItemChanged()。

Handler mainHandler = new Handler(Looper.getMainLooper());

Runnable myRunnable = new Runnable() {
   @Override 
   public void run() { adapter.notifyItemChanged() } 
};
mainHandler.post(myRunnable);