


Wie entferne ich Elemente aus einer Android RecyclerView mit Kreuzschaltflächen?
Nov 03, 2024 am 12:51 AMHinzufü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:
- Implementieren Sie die OnClickListener-Schnittstellefür den ViewHolder, um Klicks sowohl auf die ImageView als auch auf die TextView zu verarbeiten.
- 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().
- 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>
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie kann ich funktionale Programmierungstechniken in Java implementieren?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?
