나는 다른 답변을 보려고했지만 내 사례는 다루지 않습니다. 무한 스크롤로 recyview에 항목을로드 할 때마다 내 recyclerview에서 오류가 발생합니다. 때때로 그것은 리사이클 러뷰에 아이템을로드하고, 다른 시간에는 아래와 같이 logcat에 메시지가 주어진다면 리사이클 뷰를 공백으로 남겨 둡니다.Recycleview notifyDataSetChanged() erro
IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
itemAdapter.setOnLoadMoreListener(new Schoolarship_Adapter.OnLoadMoreListener() {
@Override
public void onLoadMore() {
listItem.add(null);
itemAdapter.notifyItemInserted(listItem.size() - 1);
final Handler handler = new Handler();
final Runnable r = new Runnable() {
@Override
public void run() {
listItem.remove(listItem.size() - 1);
itemAdapter.notifyItemRemoved(listItem.size());
++pagenumber;
new RetrieveItems().execute();
System.out.println("working now i guess");
itemAdapter.notifyDataSetChanged();
itemAdapter.setLoaded();
}
};
handler.post(r);
}
});
내 어댑터,
Schoolarship_Adapter(Context cont, List<Schoolarship> items, @NonNull RecyclerView rv){
context = cont;
listItems = items;
if((rv.getLayoutManager() instanceof LinearLayoutManager)) {
final LinearLayoutManager gm = (LinearLayoutManager) rv.getLayoutManager();
rv.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy){
super.onScrolled(recyclerView, dx, dy);
totalItemCount = gm.getItemCount();
lastVisibleItem = gm.findLastVisibleItemPosition();
if(!loading &&totalItemCount <= (lastVisibleItem + visibleThreshold)){
if(onLoadMoreListener!=null){
onLoadMoreListener.onLoadMore();
}
loading = true;
}
}
});
}
}
Pls는
처럼 보이는 이유를 난 아직도 내가이 응용 프로그램을 실행하는 오류가 각 시간을 얻을 않는 응용 프로그램의 나의 수준은?
'새로운 RetrieveItems 일을 실행할 수 있음'데이터를로드? –
예 내 데이터를로드하지 않습니다 –
왜 그 문장 뒤에'notifyDataSetChanged'가 생깁니 까? 이 아이디어는 ** 데이터가 완전히로드 된 후 ** 어댑터에 알립니다. 거기에 통보하면 데이터가 완전히로드되지 않습니다. 'AsyncTask'' RetrieveItems'의'onPostExecute' 메소드 안에'notifyDataSetChanged'를 써야합니다. –