Heim >Java >javaLernprogramm >Wie entferne ich Elemente mithilfe einer Kreuzschaltfläche aus RecyclerView?
Entfernen von Elementen aus RecyclerView mithilfe der Kreuzschaltfläche
In Ihrem RecyclerView-Adapter müssen Sie Kreuzschaltflächenereignisse verarbeiten und das entsprechende Element entfernen aus dem Datensatz. Hier ist eine erweiterte Version Ihres Adapters:
<code class="java">public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener { private ArrayList<String> mDataset; private static Context sContext; public MyAdapter(Context context, ArrayList<String> myDataset) { mDataset = myDataset; sContext = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_text_view, parent, false); ViewHolder holder = new ViewHolder(v); holder.mNameTextView.setOnClickListener(this); holder.mCrossButtonImageView.setOnClickListener(this); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mNameTextView.setText(mDataset.get(position)); } @Override public int getItemCount() { return mDataset.size(); } @Override public void onClick(View view) { ViewHolder holder = (ViewHolder) view.getTag(); if (view.getId() == holder.mCrossButtonImageView.getId()) { int position = holder.getAdapterPosition(); mDataset.remove(position); notifyItemRemoved(position); Toast.makeText(sContext, "Item " + holder.mNameTextView.getText() + " has been removed from list", Toast.LENGTH_SHORT).show(); } } public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mNameTextView; public ImageView mCrossButtonImageView; public ViewHolder(View v) { super(v); mNameTextView = (TextView) v.findViewById(R.id.nameTextView); mCrossButtonImageView = (ImageView) v.findViewById(R.id.crossButton); } } }</code>
Dieser Code fügt der Kreuzschaltfläche einen onClick-Listener hinzu, der beim Klicken das entsprechende Element entfernt. Beachten Sie, dass getAdapterPosition() anstelle von getPosition() verwendet werden sollte, da getPosition() jetzt veraltet ist.
Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente mithilfe einer Kreuzschaltfläche aus RecyclerView?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!