2016-11-17 82 views
0

我在我的android应用程序中有一个位置列表。我试图从list中删除一个位置,其中位置ID等于某个值。Android Java从列表中删除项目,筛选器列表

这是我的位置类:

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

那么,有没有办法从List<Location>删除的位置,而无需使用forwhile loop。像一个lambda表达C#

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

在适配器内部,您可以使用下面的函数制作一个方法mList.remove(index); notifyItemRemoved(index); –

+0

你是否被绑定到列表?在这种情况下Map 会更好 –

+2

由于Android不支持Java 8,因此您无法访问大多数面向lambda的API。 lambda的有限支持由第三方lib retrolambda提供。在你的情况下,你可以切换到一个地图或一个SparseArray或与一个好的旧的去。 –

回答

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<>(); 
1

有在ArrayList的方法直接删除一个对象。

public boolean remove(Object o) 

您将不得不重写equals方法以使其工作。在内部,它仍然会遍历所有的对象,直到找到需要的对象。

这里是该方法的link

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看到。

0

你可以试试这个下面的方法添加使用任何回路用了数组列表。

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