ホームページ >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 ハンドラーを追加します。ハンドラー内で、データセットから項目を削除し、notifyDataSetChanged() で RecyclerView を更新します。
  3. アダプター クラスに、特定の位置にある項目を削除するメソッドを追加します。 、notifyItemRemoved() および NoticeItemRangeChanged() を呼び出します。

アダプター コードの例

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。