如果我的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++) {
}
}
});
答案 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);