>  기사  >  Java  >  크로스 버튼을 사용하여 Android RecyclerView에서 항목을 제거하는 방법은 무엇입니까?

크로스 버튼을 사용하여 Android RecyclerView에서 항목을 제거하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 00:51:03132검색

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 핸들러를 추가합니다. 핸들러 내에서 데이터세트에서 항목을 제거하고 informDataSetChanged()로 RecyclerView를 업데이트합니다.
  3. Adapter 클래스에서 특정 위치의 항목을 제거하는 메서드를 추가합니다. , informItemRemoved() 및 informItemRangeChanged() 호출.

예제 어댑터 코드

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.