从recyclerView上的特定位置移除物品

时间:2019-02-12 07:57:25

标签: java android arraylist

我有一个recyclerView和一个List<>,其中包含一些随机位置

我要做的就是从存储在列表中的recyclerView中删除position项。

3 个答案:

答案 0 :(得分:0)

更好的方法是从适配器中删除对象并调用notifyDatasetChanged

答案 1 :(得分:0)

从活动中,您可以循环显示要删除的物品位置列表

for(int i = 0; i< listitem.size(); i++){adapter.deleteItem(position);}

然后在您的适配器中实现removeItem函数:

public void deleteItem(int index) {
    Dataset.remove(index);
    notifyItemRemoved(index);
}

答案 2 :(得分:0)

您可以使用以下方法在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来获取数据。例如,使用以下用户类:

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);
  }
}