【问题标题】:How to add/remove object in Recyclerview using Arraylist in Android?如何在 Android 中使用 Arraylist 在 Recyclerview 中添加/删除对象?
【发布时间】:2018-08-08 12:20:48
【问题描述】:

我正在开发一个演示音乐播放器应用程序。

为了创建播放列表,我使用了一个 recylcerview,其中单击项目将项目添加到 arraylist,然后单击从 arraylist 中删除项目。

我成功地将项目添加到 arraylist,但在替代单击时删除特定索引失败。

  ArrayList<PlayList> playListsSongs;

    holder.viewForeground.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (v.getTag() == null || v.getTag().equals("NotSelected")) {

                        playListsSongs.add(new PlayList(songs.getSong_id(), songs.getSong_path()));
                        v.setTag("Selected");
                    } else {

// NEEDS TO REMOVE THE OBJECT ADDED TO LIST HERE

                     playListsSongs.remove(position);
                        v.setTag("NotSelected");
                    }
                }
            });

我检查了多个答案,但没有成功。所以,请给我一个提示,以便我能够学习。

感谢您的宝贵时间。

【问题讨论】:

  • 从数组列表中删除项目后,您必须调用notifyDataSetChanged()

标签: android arraylist android-recyclerview


【解决方案1】:

每次列表修改后,您应该通知适配器。

adapter.notifyItemRemoved(position)

通知删除

【讨论】:

    【解决方案2】:

    设置标签是我代码中的问题。将位置标记为 recyclerview 项目后,我的代码正在运行。

    if (holder.viewForeground.getTag() == null) {
                        playListsSongs.add(new PlayList(songs.getSong_id(), songs.getSong_path()));
                        holder.viewForeground.setTag(position);
    
                    } else {
                        playListsSongs.remove(holder.viewForeground.getTag());
                        holder.viewForeground.setTag(null);
    
                    }
    

    感谢您的帮助!

    【讨论】:

      【解决方案3】:

      在onclick中使用这个来移除

      notifyItemRemoved(position);
                     notifyItemRangeChanged(position,playListsSongs.size());
                 notifyDataSetChanged();
      

      【讨论】:

      • 这有帮助吗?
      【解决方案4】:

      更改列表中的数据后,您需要调用notifyDataSetChanged() 以更新适配器数据。

      【讨论】:

        猜你喜欢
        • 2017-11-30
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 2010-11-21
        • 2014-11-22
        相关资源
        最近更新 更多