1、ListView數據源改變,頁面無法刷新問題

說明:

舊的數據源是通過構造方法傳值傳過來的。
  新的數據源是通過請求服務器獲取的。
  這個時候,我用list = newlist來把newlist的數據交給list,再調用notifyDataSetChanged這個方法來通知listview更新數據,結果頁面的數據沒有刷新。

原因:

就是list的指向已經改變,它也指向newlist指向的那個內存。而調用notifyDataSetChanged會去檢查原來list指向的數據是否變化,但是這時的list已經不是原來的list了,所以它無法判斷,只能不作出響應了。那么,這個問題的解決方法是直接在原來的list上面更改數據,可以使用下面的代碼來操作:

list.clear();
list.addAll(newlist);
adapter.notifyDataSetChanged();

這樣,list的指向就不會改變,它還是指向原來那塊內存,這樣調用notifyDataSetChanged()就可以起作用了。

總結:

在這里的重點就是要注意在開始時傳給ListView的list指向不能被改變,需要從始至終指向同一個內存,這樣調用notifyDataSetChanged后就能夠檢測到list的數據變化,從而觸發ListView的重新繪制了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 也許很多開發的朋友,尤其是Android初學者,在動態刷新ListView時,使用notifyDataSetCha...
    讀行游閱讀 1,185評論 2 18
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • 道友騎鶴東南來, 向影神交浮一白。 夜闌影下風留詩, 晚霞沁語大自在。 ——好友自東南亞坡縣遠道而來,邀請至Fla...
    吳凡風之翼閱讀 227評論 0 0
  • 忘不掉的情懷, 肆意要投入一個擁抱。 沒有看到的樣子, 只是很美妙。 她來了, 悄悄咋醒。 從晨光的的世界里, 激...
    天生把歌唱閱讀 200評論 1 6