2016-11-17 22 views
0

私のandroidアプリケーションの場所のリストがあります。ロケーションIDを特定の値に等しいlistから削除しようとしています。Android Javaのリストからの項目の削除、フィルタリスト

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

のでforまたはwhile loopを使用せずにList<Location>から場所を削除する方法があります:

これは私の場所クラスです。 C#lambdaの式のようなもの:

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

以下の関数でメソッドmList.remove(index)を作成できます。 notifyItemRemoved(index); –

+0

あなたはリストに縛られていますか?この状況では、マップはより良いでしょう。 –

+2

AndroidはJava 8をサポートしていないため、ほとんどのラムダ指向のAPIにアクセスすることはできません。 lambdaの制限付きサポートは、サードパーティのlib retrolambdaによって提供されています。あなたの場合は、マップまたはSparseArrayに切り替えるか、または古いものと一緒に行くことができます。 –

答えて

1

あなたはmListは、アレイリスト

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

直接オブジェクトを削除するArrayListでの方法があります。

public boolean remove(Object o) 

これを機能させるには、equalsメソッドをオーバーライドする必要があります。内部的には、必要なオブジェクトが見つかるまで、すべてのオブジェクトを繰り返し処理します。

ここにはlinkがあります。

1

thisによれば、lambdaという表現がJava 8に存在することがわかります。答えから

コードスニペット:あなたがdocumentationで見ることができるよう

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は、しかしlambda式がsuportedされ、すべてのJava 8の機能をセンターサポートしません。

0

ある場合はあなたがこれを試すことができます

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

アダプタに以下の方法を使用して、任意のループを使用して持つ配列のリストを追加することができます。

ArrayList<Location> arrayList = new ArrayList<>(list.size()); 
arrayList.addAll(list); 
arrayList.remove(index) OR arrayList.remove(object) 
関連する問題