Android 从另一个片段中回收查看更新数据集和适配器

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:

我正在进行一个有3个片段的片段活动。每个片段实现回收视图及其适配器。我想从一个列表中删除,然后更新另一个片段列表,但我在这方面有问题

 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阵列列表中删除。