Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Recyclerview调用notifyItemChanged以生成空白项_Java_Android_Android Recyclerview - Fatal编程技术网

Java Recyclerview调用notifyItemChanged以生成空白项

Java Recyclerview调用notifyItemChanged以生成空白项,java,android,android-recyclerview,Java,Android,Android Recyclerview,RecyclerView调用notifyItemChanged()以生成空白条目 我有一个RecyclerView,当子项中的RecyclerView数据集发生更改(例如插入了某些项)时,每个子项都有一个RecyclerView。我尝试调用父级RecyclerView的notifyItemChanged()来刷新它。但当我调用该函数时,它将导致下面出现一个空白项 mMessagesAdapter.notifyItemChanged(position); 当我为一个职位调用notifyItemC

RecyclerView
调用
notifyItemChanged()
以生成空白条目

我有一个
RecyclerView
,当子项中的
RecyclerView
数据集发生更改(例如插入了某些项)时,每个子项都有一个
RecyclerView
。我尝试调用父级
RecyclerView
notifyItemChanged()
来刷新它。但当我调用该函数时,它将导致下面出现一个空白项

mMessagesAdapter.notifyItemChanged(position);
当我为一个职位调用
notifyItemChanged()
时,下面会有一个空白项,可以看到,但没有数据,并且都是白色的


演示:

适配器.notifyItemChanged()用于刷新现有项。如果要添加新项目,则应调用适配器.notifyItemRangeChanged(position,data.size())如果要插入新项目,则可以使用
notifyItemInserted(int position)

它用于通知任何已登记的观察员该项目已反映 在新插入的位置。该项以前位于位置 现在处于位置+1


也许你应该考虑从主线程调用Advult.NoTyItEnExchange()。

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

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

您在哪里插入项目
.notifyItemChanged()
用于更新现有项目。我的布局是RecyclerView,当我将项目插入子RecyclerView时,它是RecyclerView中的每个项目,我调用父RecyclerView的notifyItemChanged来刷新子RecyclerView所在的项目,父RecyclerView将在我用您的注释刷新的项目下方生成一个空白项目,如果您正在插入项目,则需要调用notifyItemInserted而不是notifyItemChanged,请尝试此操作否,我将数据插入子RecyclerView,但每次插入操作都可能导致子RecyclerView的项目重新排序,因此,我选择调用父RecyclerView的notifyItemChanged来刷新其数据的子RecyclerViewchanged@Wesley由于这个问题是书面的,很难确定实际问题是什么。当有两个
RecyclerView
时,您可能需要相应地更新适配器的数据,然后再调用它的
。notifyItemChanged()
。。。然后它应该适当地更新显示;假设它是正确的
位置
(这可能是一个完全不同的位置,取决于它是哪一个
RecyclerView
)。我已经将演示推到github,你能帮我吗,谢谢。我已经把演示推到github,你能帮我吗,谢谢。