2017-09-09 10 views
2

ArrayListが変更されたかどうかを聞くには? たとえば、配列に新しい項目がある場合、または項目が削除された場合。 は私がrxjava2を使用していますが、良好なプロセスである場合、私は知らないあなたの代わりにArrayListあなたのそれぞれの変化に通知されOnListChangedCallbackの実装とObservableArrayListのインスタンスを使用して、それを提供することができAndroidでは私のarrayListが変更されたかどうか聞くには?

Observable.fromArray(positionsList()) 
       .subscribeOn(Schedulers.io()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(new Consumer<ArrayList<LatLng>>() { 
        @Override 
        public void accept(ArrayList<LatLng> list) throws Exception { 
         if (list.isEmpty()) return; 
         for (int i = 0; i < list.size(); i++) { 

         } 
        } 
       }); 
+0

?あなたが作成したArrayListの 'add(...)'メソッドまたは 'remove(...)'メソッドを誰かが呼び出すと通知されますか?なぜあなたはRxJavaを使ってこれを達成しようとしていますか?より多くの情報を提供してください。 –

+0

正確には、1つのアイテムが追加または削除された場合に通知する – Ali

+0

私の答えを正しいものとして受け入れることができれば幸いです。 –

答えて

1

現在使用中です。

サンプル何をしようとするexaclty

public class MyCallback extends ObservableList.OnListChangedCallback<ObservableList> { 

    public void onChanged(ObservableList sender) { 
     Log.i(tag, "list changed"); 
    } 

    public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { 
     Log.i(tag, "item range changed"); 
    } 

    public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { 
     Log.i(tag, "item range inserted"); 
    } 

    public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { 
     Log.i(tag, "item range moved"); 
    } 

    public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { 
     Log.i(tag, "item range removed"); 
    } 
} 


ObservableArrayList list = new ObservableArrayList(); 
list.addOnListChangedCallback(new MyCallback()); 
... 
list.add(element); 
+0

ありがとうございます。ついに私はカスタムリスナーを作った – Ali

関連する問題