Heim >Java >javaLernprogramm >Wie entferne ich Elemente mithilfe einer Kreuzschaltfläche aus RecyclerView?

Wie entferne ich Elemente mithilfe einer Kreuzschaltfläche aus RecyclerView?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 23:29:29558Durchsuche

How to Remove Items from RecyclerView Using a Cross Button?

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!

Stellungnahme:
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