搜尋

首頁  >  問答  >  主體

android - ListView上拉加载更多,如何控制只加载新获取的数据,而不是刷新整个ListView

ListView上拉加载更多,如何控制只刷新新获取的数据,而不是刷新整个ListView,例如:第一页的数据集合list1,上拉时获取到第二页的数据集合list2,然后list1.addAll(list2), adapter.notifyDataSetChanged();就会把所有数据都重新填充一遍,如果有很多页数据的话,填充就会越来越慢

伊谢尔伦伊谢尔伦2772 天前613

全部回覆(4)我來回復

  • 阿神

    阿神2017-04-17 17:48:20

    不要用ListView, 用RecyclerView.RecyclerView.

    其中Adapter.notifyItemInserted();就符合你的要求, 仅插入新增的数据, 使用时注意如果插入的数据是在中间, 导致本来的item的位置发生变化, 要调用mAdapter.notifyItemRangeChanged();通知Adapter

    具体的使用细节网上教程很多.
    另外RecyclerView除了点击事件和分割线比ListView麻烦一点点之外, 其他样式, 数据处理都更灵活, 复杂的列表多使用RecyclerView

    其中Adapter.notifyItemInserted();就符合你的要求, 僅插入新增的資料, 使用時注意如果插入的資料是在中間, 導致本來的item的位置發生變化, 要呼叫mAdapter.notifyItemRangeChanged();通知Adapter#🎜🎜# #🎜🎜#具體的使用細節網上教程很多.
    另外RecyclerView除了點擊事件和分割線比ListView麻煩一點點之外, 其他樣式, 數據處理都更靈活, 複雜的列表多使用RecyclerView吧#🎜🎜#

    回覆
    0
  • 黄舟

    黄舟2017-04-17 17:48:20

    建議使用7.0新出的DiffUtil工具類別

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:48:20

    其實只是刷新資料不會影響渲染本身的

    優化以後的listview本來就是有回收機制的,無論資料是什麼 渲染只在螢幕可見區域進行。等你滑到可見以後才會繼續渲染。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:48:20

    從後台取得的時候,傳頁參數,只取得目前頁,下拉載入就刷新第二頁,以此類推

    回覆
    0
  • 取消回覆