Java 回收视图';插入的项目插入到错误的位置
我有一个回收视图,它是反向的, 我在handler.postDelay内运行的循环中将项目逐个添加到我的recyclerview中。 我将每个项目添加到位置0,因为我希望将新项目添加到列表的底部,列表的其余部分向上推。 但当我的列表增加时,它也会在不相关的位置添加新的项目。代码如下:Java 回收视图';插入的项目插入到错误的位置,java,android,list,android-recyclerview,Java,Android,List,Android Recyclerview,我有一个回收视图,它是反向的, 我在handler.postDelay内运行的循环中将项目逐个添加到我的recyclerview中。 我将每个项目添加到位置0,因为我希望将新项目添加到列表的底部,列表的其余部分向上推。 但当我的列表增加时,它也会在不相关的位置添加新的项目。代码如下: private void setRecyclerview() { i = 0; adapterConversation = new AdapterConversation(this, temp.ge
private void setRecyclerview() {
i = 0;
adapterConversation = new AdapterConversation(this, temp.get(i));
recyclerviewConversation.setLayoutManager(new LinearLayoutManager(this,
RecyclerView.VERTICAL, true));
recyclerviewConversation.setAdapter(adapterConversation);
adapterConversation.addItem(1, temp.get(i));
adapterConversation.notifyItemInserted(0);
time = temp.get(i).getStart_at();
i++;
setHandler();
}
这是我的处理程序:
private void setHandler() {
handler.postDelayed(runnable, time);
runnable = () -> {
if (i == temp.size()) {
finish.setVisibility(View.VISIBLE);
}
if (i < temp.size() && !isPaused && (temp.get(i).getStart_at()) * 1000 < player.getCurrentPosition()) {
adapterConversation.addItem(1, temp.get(i));
//adapterConversation.notifyItemInserted(adapterConversation.getItemCount() - (i + 1));
adapterConversation.notifyItemInserted(0);
recyclerviewConversation.scrollToPosition(0);
i++;
if (i < temp.size()) {
time = temp.get(i).getStart_at();
}
}
handler.postDelayed(runnable, time);
};
runnable.run();
}
当我的列表增长时,列表中的旧项会发生变化,它们会得到新的值(这是最新添加的值),但我不会调用“notifyDataSetChange”
有人知道为什么会这样吗?此“notifyItemInserted”插入位置是否错误
感谢您的帮助首先,
notifyDataSetChange
和notifyitemserted
调用是BaseAdapter
方法。这意味着调用它们不会在列表中“插入”任何您试图显示的内容。他们只需要在列表中添加新项目并更新视图的任何观察者
在您的代码中,似乎总是将项目添加到特定位置。因为你启动了inti=0在setRecyclerview()
中的code>,这意味着每次插入的位置都是0。你不必这么做。只是。将新项目添加到列表中,并设置使用LinearLayoutManager.setReverseLayout(true)
,从视图底部显示
public AdapterConversation(Context context) {
this.context = context;
this.itemCount = 0;
}
public void addItem(int item, LessonDetailText lessonDetailText) {
itemCount += item;
lessonDetailTextList.add(lessonDetailText);
}