我正在从网络调用中获取状态列表。我正在处理另一个清单。现在,当我从一个列表中删除项目时,同一项目也正在从其他列表中删除。 我无法设置过滤器,因为这个问题。请让我知道该怎么做。删除列表中的项目会反映其他相同类别的列表。为什么?
这是我的代码。
private void getStates() {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Please Wait");
progressDialog.show();
RestApi restApi = RetroSingleton.getInstance().getRestApi();
restApi.getStates()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<State2>() {
@Override
public void onCompleted() {
progressDialog.dismiss();
}
@Override
public void onError(Throwable e) {
progressDialog.dismiss();
e.printStackTrace();
}
@Override
public void onNext(State2 model) {
state2 = model;
Log.d(Const.TAG, "onNext: " + model.getState().size());
Log.d(Const.TAG, "onNext: " + state2.getState().size());
model.getState().remove(0); //here i remove item
Log.d(Const.TAG, "onNext: " + model.getState().size());
Log.d(Const.TAG, "onNext: " + state2.getState().size());
//now size is same! WHY?
}
});
}
这是我State2.java
public class State2 {
@SerializedName("error")
private Boolean error;
@SerializedName("state")
private List<State> state;
public Boolean getError() {
return error;
}
public void setError(Boolean error) {
this.error = error;
}
public List<State> getState() {
return state;
}
public void setState(List<State> state) {
this.state = state;
}
public class State {
@SerializedName("id")
private String id;
@SerializedName("name")
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
任何帮助,将不胜感激。请让我知道我只是不知道 谢谢
'state2'和'model'引用同一个'State2'对象,因此只有一个列表。 – Eran
state2 =(State2)model.clone();采取克隆没有区别 – xbadal