【问题标题】:RecycleView update dataset and adapter from another fragmentRecycleView 从另一个片段更新数据集和适配器
【发布时间】:2016-04-06 11:43:16
【问题描述】:

我正在进行一个有 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 的索引不匹配!

【问题讨论】:

    标签: android android-fragments arraylist android-recyclerview


    【解决方案1】:

    您使用相同的索引值删除了两次,这就是为什么您在第二次遇到错误的原因.. 只需执行此操作。我希望它会工作

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

    或者只调用这一行

    ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position)
    

    【讨论】:

    • 我不仅要从 RecycleView 中删除,还要从我的 RecycleView ArrayList 中删除。
    【解决方案2】:

    我终于通过添加刷新 Recycle-view item counts 解决了这个问题:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多