[英]remove an item from one recyclerview and add it to another
我有兩個 recyclerviews,當我單擊回收器 1 中的一個項目時,我希望將其刪除並將其添加到回收器 2 中。我嘗試在適配器中執行此操作,但它返回 null。 有人知道如何實現嗎? 更新 1:
我的綁定方法:
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
holder.title.setText(tasks.get(position).getTitle());
holder.description.setText(tasks.get(position).getDescription());
if(!tasks.get(position).getActive())
holder.checkBox.setChecked(true);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!holder.checkBox.isChecked()){
mainActivity.finishedItems.add(tasks.get(position));
mainActivity.items.remove(tasks.get(position));
}
else if(holder.checkBox.isChecked()){
mainActivity.items.add(tasks.get(position));
mainActivity.finishedItems.remove(tasks.get(position));
}
}
});
}
主要活動:
public ArrayList<TaskModel> items;
public ArrayList<TaskModel> finishedItems;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
items = new ArrayList<>();
finishedItems = new ArrayList<>();
RecyclerViewAdapter RecyclerViewAdapter = new RecyclerViewAdapter(this,items);
listView.setLayoutManager(new LinearLayoutManager(this));
listView.setAdapter(RecyclerViewAdapter);
ps:我的數組列表中有項目,它們不是空的。
好吧,沒有人再次回答我,我自己找到了解決方案:我在適配器中添加了兩個 Arraylist,並在適配器本身內交換了數據。
適配器:
public class RecyclerViewAdapter extends RecyclerView.Adapter<ViewHolder> {
private ArrayList<TaskModel> tasks;
private ArrayList<TaskModel> tasks2;
private Context context;
public RecyclerViewAdapter(Context context, ArrayList<TaskModel> list1, ArrayList<TaskModel> list2){
tasks = list1;
tasks2 = list2;
this.context = context;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
holder.title.setText(tasks.get(position).getTitle());
holder.description.setText(tasks.get(position).getDescription());
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tasks2.add(tasks.get(position));
tasks.remove(position);
MainActivity.listView.getAdapter().notifyDataSetChanged();
MainActivity.finishedListView.getAdapter().notifyDataSetChanged();
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.