Android Java从列表中删除项目,过滤列表

时间:2016-11-17 18:57:01

标签: java android list

我的android应用程序中有一个位置列表。我正在尝试从list移除位置,其中位置ID等于某个值。

这是我的位置分类:

public class Location{
     Private int locationId;
     Private String locationName;
}

有没有办法在不使用List<Location>for的情况下从while loop移除位置。类似于lambda中的C#表达式:

var filteredLocations = locations.Where(x=>x.LocationId!=3).ToList();

4 个答案:

答案 0 :(得分:1)

ArrayList中有一种方法可以直接删除对象。

public boolean remove(Object o)

您必须覆盖equals方法才能使其正常工作。在内部,它仍然会迭代所有对象,直到找到所需的对象。

以下是该方法的link

答案 1 :(得分:1)

根据this回答,您可以看到lambda中存在Java 8个表达式。

答案中的代码段:

final Array<Integer> a = array(1, 2, 3);  
final Array<Integer> b = a.map({int i => i + 42});  
arrayShow(intShow).println(b); // {43,44,45}  

Android并未支持所有Java 8个功能,但lambda表达式会被支持,您可以在documentation中看到。

答案 2 :(得分:1)

您可以使用适配器

中的以下方法,使用任何循环添加数组列表
//you can use addItem all for adding data in array
    public void addItem(ClassName item) {
            mList.add(item);
            notifyItemInserted(mList.size() - 1);
        }

//delete all for deleting the whole list of data
        public void deleteAll() {
            mList.clear();
            notifyDataSetChanged();
        }

//For deleting a perticular item from data
        public void deleteItem(int index) {
            mList.remove(index);
            notifyItemRemoved(index);

        }

//For adding the whole set of array
        public void addAllItems(List<ClassName> items) {
            mList.addAll(items);
            notifyDataSetChanged();
        }

//For Updating a single item  
        public void updateItem(int index, ClassName item) {
            mList.set(index, item);
            notifyItemChanged(index);
        }

其中mList是数组列表

public List<ClassName> mList = new ArrayList<>();

答案 3 :(得分:0)

你可以试试这个。

ArrayList<Location> arrayList = new ArrayList<>(list.size());
arrayList.addAll(list);
arrayList.remove(index) OR arrayList.remove(object)