Tôi đang cố gắng cập nhật các mục của một bản tái chế bằng cách sử dụng notifyDataSetChanged ().
Đây là phương thức onBindViewHolder () của tôi trong bộ điều hợp tái chế.
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
//checkbox view listener
viewHolder.getCheckbox().setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//update list items
notifyDataSetChanged();
}
});
}
Những gì tôi muốn làm là cập nhật các mục danh sách, sau khi tôi chọn một hộp kiểm. Tôi nhận được một ngoại lệ bất hợp pháp mặc dù:"Cannot call this method while RecyclerView is computing a layout or scrolling"
java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:1462)
at android.support.v7.widget.RecyclerView$RecyclerViewDataObserver.onChanged(RecyclerView.java:2982)
at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyChanged(RecyclerView.java:7493)
at android.support.v7.widget.RecyclerView$Adapter.notifyDataSetChanged(RecyclerView.java:4338)
at com.app.myapp.screens.RecycleAdapter.onRowSelect(RecycleAdapter.java:111)
Tôi cũng đã sử dụng notifyItemChanged (), ngoại lệ tương tự. Bất kỳ cách bí mật để cập nhật để thông báo cho bộ chuyển đổi rằng một cái gì đó thay đổi?