Heim > Java > javaLernprogramm > Wie entferne ich Elemente aus einer Android RecyclerView mit Kreuzschaltflächen?

Wie entferne ich Elemente aus einer Android RecyclerView mit Kreuzschaltflächen?

Patricia Arquette
Freigeben: 2024-11-03 00:51:03
Original
196 Leute haben es durchsucht

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

Hinzufügen und Entfernen von Android RecyclerView-Elementen

Problem

Diese RecyclerView-Implementierung enthält ein TextView-Feld und eine Kreuzschaltfläche (ImageView). Eine Schaltfläche außerhalb von RecyclerView wird verwendet, um die Sichtbarkeit der Kreuzschaltfläche umzuschalten. Das Ziel besteht darin, ein Element aus der RecyclerView zu entfernen, wenn auf die entsprechende Kreuzschaltfläche geklickt wird.

Lösung

Innerhalb der ViewHolder-Klasse des Adapters:

  1. Implementieren Sie die OnClickListener-Schnittstellefür den ViewHolder, um Klicks sowohl auf die ImageView als auch auf die TextView zu verarbeiten.
  2. Fügen Sie einen OnClick-Handler für die Kreuzschaltfläche (ImageView) hinzu. Entfernen Sie im Handler das Element aus dem Datensatz und aktualisieren Sie die RecyclerView mit notifyDataSetChanged().
  3. Fügen Sie in Ihrer Adapterklasse eine Methode hinzu, um ein Element an einer bestimmten Position zu entfernen , Aufruf von notifyItemRemoved() und notifyItemRangeChanged().

Beispieladaptercode

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente aus einer Android RecyclerView mit Kreuzschaltflächen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage