0

그래서 내 문제는 내가 여기에서 우연히 만난 모든 것의 반대가되는 것처럼 보입니다.notifyDataSetChanged()가 호출되지 않지만 데이터가 변경됩니다. RecyclerView 및 어댑터의 수명주기?

나는 다음과 같은 코드 조각이 :

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
    recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    MyAdapter adapter = new MyAdapter(this); 
    recyclerView.setAdapter(adapter); 
    adapter.buildModels(); 

그래서 내가 먼저 휴지통보기로 어댑터를 설정 한 다음 나는 모델을 구축 할 수 있습니다. 따라서 어댑터의 getItemCount()가 0 인 간단한 순간이 있습니다. 어디서나 notifyDataSetChanged()를 호출하지 않지만 buildModels()을 호출 한 후 어댑터가 모델 표시를 시작합니다. 필자는 RecyclerView의 소스 코드에서 몇 명의 관찰자를 보았습니다.

이 작동 방식을 테스트하기 위해 adapter.buildModels() 바로 뒤에 "adapter.addOneMoreItem()"메서드를 추가했으며 어댑터는 새 항목을 표시하는 방법도 알고 있습니다.

그래서 질문 : 정확히 notifyDataSetChanged()가 필요합니까? 유스 케이스 란 무엇입니까? 누구나 RecyclerView와 어댑터의 정확한 수명주기를 알고 있습니까?

댓글 : MyAdapter는 일반 어댑터입니다 -> 공용 클래스 MyAdapter이 확장 RecyclerView.Adapter < RecyclerView.ViewHolder> {}

+1

모든 코드 (다섯 선)은 다음 프레임이 표시되기 전에 시퀀스에서 실행 * : 여기

소스 코드 또는 RecyclerView이다. 어느 시점에서 RecyclerView는 실제로 모든 것을 설정합니다. 알리지 않고 다른 곳에서 어댑터를 변경하면 충돌이 발생할 수 있습니다 (일관성없는 상태가 감지 됨). –

답변