java - 从 recyclerView 的特定位置删除项目
问题描述
我有一个recyclerView
和一个List<>
包含一些随机位置
我要做的就是recyclerView
从position
存储在列表中的项目中删除项目。
解决方案
您可以使用以下方法删除 RecyclerView 适配器中的单个项目:
List<YourData> list;
// position of your data in the list.
private removeItem(int position) {
list.remove(position);
notifyItemRemoved(position);
}
但是如果您需要按顺序删除多个项目,则不能使用它。以下将不起作用:
removeItem(3);
removeItem(36);
removeItem(54);
因为列表索引在第一次调用removeItem()
.
因此,您需要依赖于您的数据的 ID。例如,使用以下 User 类:
public class User {
private long id;
private String name;
// constructor
// setter
// getter
}
您可以通过使用以下方法检查 id 来顺序删除多个项目:
// list of your User
List<User> users;
// id is your User id
private removeItem(int id) {
for(int i = 0; i < users.size(); i++) {
User user = users.get(i)
if(user.getId() == id) {
users.remove(i);
break;
}
}
}
如果您知道 id,则可以使用它:
removeItem(3);
removeItem(36);
removeItem(54);
当然,您可以通过使用 id 列表添加另一种方法来删除项目:
private removeItems(List<Integer> ids) {
for(Integer id: ids) {
removeItem(id);
}
}
推荐阅读
- objective-c - 调用完成块时ObjectiveC崩溃
- java - 安装jdk的问题
- javascript - 如何使用 Node JS 从 json 中了解对象类型
- c# - 使用 cshtml 禁用输入
- r - R - 几何布朗运动建模
- json - Groovy - Read JSON value using variable
- android - 在 TextView 中设置长文本将挂起 ui 线程(更具体地说,在 Android 的 nComputeLineBreaks() 调用中)
- python - 根据中间数据框删除行
- angular - Angular NgModule 能否提供一个 style.scss 文件供导入它的人使用?
- sql - 为表数据和列定义生成 xml