【发布时间】:2020-04-05 19:01:09
【问题描述】:
我有一个食品(类)对象的 CardViews 的 RecyclerView。正在发生的一件奇怪的事情是,当我使用一种方法将新的 Food 对象添加到我正在使用的 ArrayList 并通知适配器已添加了一个值时,卡被添加到屏幕上,但它有一组不同的值。
我使用 2 个占位符 Food 对象默认显示在屏幕上,按下“添加”按钮应该添加一个名为“Name”的新对象,但我得到了第一个占位符的另一个副本。
当屏幕上添加了太多卡片时,上下滑动会改变卡片的顺序,突然,新的项目(数据正确)出现了!
怎么了? 顺便说一句,该应用不会崩溃。
将新的 Food 对象添加到名为“foods”的 ArrayList 的功能:
public void addFood(){
foods.add(new Food("Name",0,3,2)); //a constructor
foodAdapter.notifyItemInserted(0);
}
【问题讨论】:
-
使用 notifyDatasetchanged 代替 itemchange。
-
您是否打算将项目插入列表中的第一个位置(索引 0 即 notifyItemInserted(0))?为了更好地帮助您,请提供与适配器设置和食品类相关的代码。
-
是的,我的意图是每次我添加一些东西时,它都应该放在页面的顶部(就像一个堆栈)。我也应该使用 notifyDataSetChanged(除了 notifyItemInserted 吗?)
-
@Arc 我是否遗漏了文档中有关 Recycler 视图的内容?
-
@SohailSaha,你明白了,这与职位有关。 ??????
标签: java android android-studio android-recyclerview