십자 버튼을 사용하여 RecyclerView에서 항목 제거
RecyclerView 어댑터에서 교차 버튼 이벤트를 처리하고 해당 항목을 제거해야 합니다. 데이터 세트에서. 다음은 향상된 버전의 어댑터입니다.
<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>
이 코드는 onClick 리스너를 십자 버튼에 추가하여 클릭 시 해당 항목을 제거합니다. getPosition()은 이제 더 이상 사용되지 않으므로 getPosition() 대신 getAdapterPosition()을 사용해야 합니다.
위 내용은 크로스 버튼을 사용하여 RecyclerView에서 항목을 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!