Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我的arrayList发生了变化,如何倾听?_Java_Android_Rx Java2 - Fatal编程技术网

Java 如果我的arrayList发生了变化,如何倾听?

Java 如果我的arrayList发生了变化,如何倾听?,java,android,rx-java2,Java,Android,Rx Java2,如果我的ArrayList被更改,如何收听? 例如,如果我的数组有新项或项已被删除。 我使用rxjava2,但我不知道这是否是一个好的过程 Observable.fromArray(positionsList()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consum

如果我的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++) {

                        }
                    }
                });
Observable.fromArray(positionsList())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(新消费者){
@凌驾
public void accept(ArrayList列表)引发异常{
if(list.isEmpty())返回;
对于(int i=0;i
在Android上,您可以使用的实例,并为其提供在每次更改时通知的实现,而不是当前使用的
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);
公共类MyCallback扩展了ObservableList.OnListChangedCallback{
更改后的公共无效(可观察列表发送方){
Log.i(标签“列表已更改”);
}
已更改的公共无效项(ObservableList发送方、int positionStart、int itemCount){
Log.i(标记“项目范围已更改”);
}
已插入的公共无效项(ObservableList发送方、int positionStart、int itemCount){
Log.i(标签,“插入的项目范围”);
}
public void已移动(ObservableList发送方、int-fromPosition、int-toPosition、int-itemCount){
Log.i(标记“项目范围已移动”);
}
已删除的公用邮件(ObservableList发件人、int positionStart、int itemCount){
Log.i(标签“移除的项目范围”);
}
}
ObservableArrayList=新的ObservableArrayList();
addOnListChangedCallback(新的MyCallback());
...
列表。添加(元素);

你想做什么?如果有人在您创建的ArrayList上调用
add(…)
remove(…)
方法,是否希望收到通知?为什么要通过使用RxJava来实现这一点?请提供更多信息。确切地说,我想通知您是否在我的列表中添加或删除了一项。如果您不介意,如果您能接受我的正确答案,那将是非常棒的。谢谢您的帮助。最后,我创建了我的自定义侦听器