如果我的arrayList改变了怎么听?

时间:2017-09-09 15:55:37

标签: java android rx-java2

如果我的ArrayList被更改,如何监听? 例如,如果我的数组有新项目或项目是删除。 我使用rxjava2,但我不知道是否是一个好的过程

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++) {

                        }
                    }
                });

1 个答案:

答案 0 :(得分:1)

在Android上,您可以使用ObservableArrayList的实例,并为其提供OnListChangedCallback的实施,该实施会在每次更改时通知您,而不是您当前使用的ArrayList

<强>示例

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