解決Fragment中ExpandableListView重新整理失敗的絕招,expandablelistview

來源:互聯網
上載者:User

解決Fragment中ExpandableListView重新整理失敗的絕招,expandablelistview

不知道有沒有朋友遇到過這種問題,在一個fragment1添加的資料(確定已經添加到sqlite裡面了),但是添加的資料要在另一個fragment2的expandableListView裡面顯示出來。這就設計到重新整理的問題。

借鑒了前人的做法,其中感覺比較有好的做法是用非同步處理的方式,在適配器外面聲明一個Handler,然後在ExpandableListView構造方法裡面接收訊息,調用notifyDataSetChanged方法,按他人的說法這個只有group重新整理了,child的資料沒給刷出來。看api文檔發現Group 的伸縮會

引起getChildView(int, int, boolean, View, ViewGroup)  的運行,也就是說只要

伸縮一次就可以了!代碼如下:

expandableList.collapseGroup(groupPosition);

expandableList.expandGroup(groupPosition);

連Adapter 都不用重寫! 在fragment2裡面寫一個refresh方法利用handler發送訊息以運行接收訊息裡面的notifyDataSetChanged方法通知適配器資料發生了改變。在fragment1通過getFragmentManager調用fragment2的refresh方法完成重新整理操作。

試了下,還是不行。

將在手機調試的工程退出,再點擊進去的時候列表的資訊又全部正常顯示出來了。曾經想過去人為地去控制Activity的生命週期,以達到想要的效果,不過感覺不是常規做法沒去用。最後在fragment裡用getActivity().recreate();頁面閃一下,資料就弄出來了。原來其實很簡單,Activity重新啟動,所有的資料重新載入,新添加的資料當然會顯示到ExpandableListView裡面


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.