首页 >Java >java教程 >如何使用十字按钮从 Android RecyclerView 中删除项目?

如何使用十字按钮从 Android RecyclerView 中删除项目?

Patricia Arquette
Patricia Arquette原创
2024-11-03 00:51:03201浏览

How to Remove Items from an Android RecyclerView with Cross Buttons?

Android RecyclerView 项目添加和删除

问题

此 RecyclerView 实现包括一个 TextView 框和一个十字按钮(ImageView)。 RecyclerView 外部的按钮用于切换十字按钮的可见性。目的是当点击相应的十字按钮时从RecyclerView中删除一个项目。

解决方案

在适配器的ViewHolder类中:

  1. 为 ViewHolder 实现 OnClickListener 接口来处理 ImageView 和 TextView 上的点击。
  2. 为十字按钮(ImageView)添加 OnClick 处理程序。在处理程序中,从数据集中删除项目并使用 notificationDataSetChanged() 更新 RecyclerView。
  3. 在 Adapter 类中,添加一个方法来删除特定位置的项目,调用notifyItemRemoved() 和notifyItemRangeChanged()。

示例适配器代码

<code class="java">public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private ArrayList<String> mDataset;

    public MyAdapter(ArrayList<String> myDataset) {
        mDataset = myDataset;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        // ...

        holder.mNameTextView.setOnClickListener(this);
        holder.crossButton.setOnClickListener(this);

        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        // ...

    }

    @Override
    public void onClick(View view) {
        if (view.getId() == holder.crossButton.getId()) {
            removeAt(holder.getAdapterPosition());
        } else if (view.getId() == holder.mNameTextView.getId()) {
            // ...
        }
    }

    public void removeAt(int position) {
        mDataset.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position, mDataset.size());
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        TextView mNameTextView;
        ImageView crossButton;

        public ViewHolder(View v) {
            super(v);

            mNameTextView = (TextView) v.findViewById(R.id.nameTextView);
            crossButton = (ImageView) v.findViewById(R.id.crossButton);
        }
    }
}</code>

以上是如何使用十字按钮从 Android RecyclerView 中删除项目?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn