2016-11-17 1 views
0

У меня есть список мест в моем приложении android. Я пытаюсь удалить местоположение из list, где идентификатор местоположения равен определенному значению.Android Java удалить элемент из списка, список фильтров

Это мое местоположение класса:

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(); 
+0

Внутри адаптера вы можете сделать метод с нижней функцией mList.remove (index); notifyItemRemoved (index); –

+0

Вы привязаны к списку? Карта была бы лучше в этой ситуации –

+2

Поскольку Android не поддерживает Java 8, у вас нет доступа к большинству лямбда-ориентированных API. Ограниченная поддержка lambdas предоставляется третьей стороной 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 не SUPORT все Java 8 функции, однако lambda выражения suported, как вы можете видеть в documentation.

0

Вы можете попробовать это.

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