В адаптере RecyclerView я использую Onservablelist и реализую ObservableList.OnListChangedCallback следующим образом:
public abstract class BaseAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ObservableList<T> mData;
private ObservableList.OnListChangedCallback<ObservableList<T>> mChangedCallback;
public BaseAdapter(ObservableList<T> data) {
mData = data;
initOnListChangedCallback();
}
private void initOnListChangedCallback() {
mChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<T>>() {
...
};
}
@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
mData.addOnListChangedCallback(mChangedCallback);
}
@Override
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
mData.removeOnListChangedCallback(mChangedCallback);
}
...
}
когда мне это нравится:
data.addAll(XX); // it work well and adapter receive the notify
но, когда мне это нравится :
data.removeAll(XX); // it work well ,but the adapter cann't receive the notify
и когда мне это нравится:
foreach(A a:XX){
data.remove(a); // it work well and adapter receive the notify
}
Вопрос: 1. почему removeAll не работает, но удалить работает хорошо?