RecycleView从另一个片段更新数据集和适配器

时间:2016-01-02 09:31:42

标签: android android-fragments arraylist android-recyclerview

我正在进行具有3个片段的片段活动。每个片段都实现了Recycle-view及其适配器。我想从列表中删除然后更新另一个片段列表,但我有问题。

 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的索引不匹配!

2 个答案:

答案 0 :(得分:0)

您使用相同的索引值删除两次,这就是您第二次收到错误的原因。只需执行此操作即可。我希望它会起作用

ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyDataSetChanged();

或只调用此行

ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position)

答案 1 :(得分:0)

我最终通过添加以下内容来刷新回收视图项目计数来解决此问题:

notifyItemRangeChanged(data_list_position, newsize);

似乎Recycle-view需要在删除或添加新项目后更新它的列表计数。

       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());