내 질문은이 게시물을 기반으로합니다. 두 번째 방법은 성능에게 위의 질문에 대한 답이 있다고Android ListView - adapter.notifyDataSetChanged와 새 어댑터 사용의 차이점
너무 비용이 많이 들고 영향을주기 때문에 당신이 notifyDataSetChanged()
하지 listView.setAdapter(new Adapter(....));
를 호출해야합니다 목록보기를 새로 고치 나는 다양한 기사를 읽은
Android. How does notifyDataSetChanged() method and ListViews work?
adapter.notifyDataSetChanged()
은 현재 화면에 표시되는보기에 영향을줍니다. 따라서 getView()
은 현재 표시된 항목의 수만큼 호출됩니다.
그러나 새 어댑터를 listView에도 할당 할 때 getView()
은 동일한 횟수만큼 호출됩니다.
adapter.notifyDataSetChanged()
과 listView.setAdapter(new Adapter(....));
의 차이점은 무엇입니까?
또 다른 중요한 차이점은 스크롤 위치를 유지하기 위해 안정적인 ID를 사용할 수있는 능력을 잃게된다는 것입니다. ListView는 새 어댑터의 안정 ID가 이전 어댑터와 동일하고 귀하의 사용자를 목록의 맨 위로 되돌려 보낼 것입니다. – sddamico
그래서 (꼭대기에서 스크롤을 제외하고) 뷰를 재사용하기 위해 getView() 메소드에서 ViewHolder를 사용할 때만 차이가 있습니까? – Anonymous
차이점은 실제로 제공된 'convertView'를 사용했는지 여부입니다 (즉, 항상 값을 무시하고 새보기를 작성/부 풀림). ViewHolder 패턴은 이에 대한 추가 최적화입니다. 이 지점을 포함하도록 수정 된 답변. – matiash