java - 从一个 recyclerview 中删除一个项目并将其添加到另一个
问题描述
我有两个 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();
}
});
}
推荐阅读
- powershell - 如何在powershell类的arraylist中添加对象
- flutter - Flutter 升级 2.5.3 或 2.5.0 版本后未生成 Network.g 文件
- android - android Fatal signal 11 (SIGSEGV) crash with realm-js and react native
- vpn - 如何建立gate2gate ipsec vpn网关对?
- c++ - 使用变体变量作为其他变体函数的输入
- azure - 如何将文件上传到 c# Azure Function 生成的 FTP/webdav?
- android - 如何在所有 Recyclerview 项目之后设置按钮位置
- reactjs - MUI 对话框 - 无法在对话框操作中将 onClose 传递给 onClick
- reactjs - TypeError:组合减速器时分配给常量变量
- reactjs - 赛普拉斯在尝试在 reactjs 应用程序中运行测试时抛出 Webpack 编译错误