Android 从另一个片段中回收查看更新数据集和适配器
我正在进行一个有3个片段的片段活动。每个片段实现回收视图及其适配器。我想从一个列表中删除,然后更新另一个片段列表,但我在这方面有问题Android 从另一个片段中回收查看更新数据集和适配器,android,android-fragments,arraylist,android-recyclerview,Android,Android Fragments,Arraylist,Android Recyclerview,我正在进行一个有3个片段的片段活动。每个片段实现回收视图及其适配器。我想从一个列表中删除,然后更新另一个片段列表,但我在这方面有问题 public void deleteIt(View v) { ZeroActivity.dao.deleteMessages(serverId); // delete the mesage from DB switch (TransactionActivity.current_tab) { case 0:
public void deleteIt(View v) {
ZeroActivity.dao.deleteMessages(serverId); // delete the mesage from DB
switch (TransactionActivity.current_tab) {
case 0:
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adapter
break;
case 2:
但总是在第一次删除并选择最终项目后,应用程序崩溃并出现此错误:
Invalid index 4, size is 3
问题似乎是适配器的索引和Arraylist不匹配 您使用相同的索引值删除了两次,这就是第二次出现错误的原因。。就这么做吧。我希望它能起作用
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyDataSetChanged();
或者只打这个电话
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position)
您使用相同的索引值删除了两次,这就是第二次出现错误的原因。。就这么做吧。我希望它能起作用
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyDataSetChanged();
或者只打这个电话
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position)
我最终通过添加以下内容刷新循环视图项目计数来解决此问题:
notifyItemRangeChanged(data_list_position, newsize);
似乎回收视图在删除或添加新项目后需要更新其列表计数
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adsapter
ZeroActivity.recycleViewAdapter1.notifyItemRangeChanged(data_list_position, ZeroActivity.itemData_1.size());
我最终通过添加以下内容刷新循环视图项目计数来解决此问题:
notifyItemRangeChanged(data_list_position, newsize);
似乎回收视图在删除或添加新项目后需要更新其列表计数
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adsapter
ZeroActivity.recycleViewAdapter1.notifyItemRangeChanged(data_list_position, ZeroActivity.itemData_1.size());
我不仅要从RecycleView中删除,还要从我的RecycleView阵列列表中删除。我不仅要从RecycleView中删除,还要从我的RecycleView阵列列表中删除。