ListView上拉加载更多,如何控制只刷新新获取的数据,而不是刷新整个ListView,例如:第一页的数据集合list1,上拉时获取到第二页的数据集合list2,然后list1.addAll(list2), adapter.notifyDataSetChanged();就会把所有数据都重新填充一遍,如果有很多页数据的话,填充就会越来越慢
小伙看你根骨奇佳,潜力无限,来学PHP伐。
ListView를 사용하지 말고 RecyclerView을 사용하세요.
RecyclerView
그 중 Adapter.notifyItemInserted();은 새로 추가된 데이터만 삽입하므로, 삽입된 데이터가 중간에 있어 원본 항목의 위치가 변경될 경우 호출이 필요하니 주의하세요. mAdapter.notifyItemRangeChanged(); 어댑터에 알리기 위해
Adapter.notifyItemInserted();
mAdapter.notifyItemRangeChanged();
특정 사용법이 자세히 설명된 온라인 튜토리얼이 많이 있습니다. 또한 RecyclerView ListView보다 클릭 이벤트와 구분선이 조금 더 번거롭다는 점을 제외하고는 다른 스타일과 데이터 처리가 더 유연합니다. RecyclerView
7.0의 새로운 DiffUtil 도구 클래스를 사용하는 것이 좋습니다
실제로 데이터를 새로 고치는 것만으로는 렌더링 자체에 영향을 미치지 않습니다
최적화 후 목록 보기에는 재활용 메커니즘이 있습니다. 데이터가 무엇이든 화면의 보이는 영역에서만 렌더링이 수행됩니다. 슬라이드하여 표시할 때까지 렌더링이 계속되지 않습니다.
백그라운드에서 가져올 때 페이지 매개변수를 전달하고 현재 페이지만 가져와 두 번째 페이지를 로드하고 새로 고치는 등의 작업을 수행합니다.
ListView를 사용하지 말고
RecyclerView
을 사용하세요.그 중
Adapter.notifyItemInserted();
은 새로 추가된 데이터만 삽입하므로, 삽입된 데이터가 중간에 있어 원본 항목의 위치가 변경될 경우 호출이 필요하니 주의하세요.mAdapter.notifyItemRangeChanged();
어댑터에 알리기 위해특정 사용법이 자세히 설명된 온라인 튜토리얼이 많이 있습니다.
또한
RecyclerView
ListView보다 클릭 이벤트와 구분선이 조금 더 번거롭다는 점을 제외하고는 다른 스타일과 데이터 처리가 더 유연합니다.RecyclerView
7.0의 새로운 DiffUtil 도구 클래스를 사용하는 것이 좋습니다
실제로 데이터를 새로 고치는 것만으로는 렌더링 자체에 영향을 미치지 않습니다
최적화 후 목록 보기에는 재활용 메커니즘이 있습니다. 데이터가 무엇이든 화면의 보이는 영역에서만 렌더링이 수행됩니다. 슬라이드하여 표시할 때까지 렌더링이 계속되지 않습니다.
백그라운드에서 가져올 때 페이지 매개변수를 전달하고 현재 페이지만 가져와 두 번째 페이지를 로드하고 새로 고치는 등의 작업을 수행합니다.