【Android】關於不刪除當前介面資料重新整理列表問題
阿新 • • 發佈:2019-01-27
前言:
App中有一模組為應用中心,改版之後低仿了ZFB中應用管理的模式,但是就按照我們之前的開發方式,首頁重新整理時會將資料清空一下然後重新賦值給list填充到介面上,甲方領導看了之後感覺體驗不是很好,因為IOS端是不清空資料重新整理的,所以要求Android端進行修改!(因涉及甲方,所以不貼圖了)
動手:
本人開發積累的知識不是很足,所以在List上面也沒啥積累,就先試試List和Adapter常用的幾種方式,但是不是很起作用,百度了好像也沒啥解決這種小問題的,於是還是自己動手豐衣足食!
首先看了下程式碼邏輯:
recentlyAdapter.clearData(); //先清空adapter中的資料 String cacheData = lruJsonCache.getAsString("newslist");//然後獲取資料(這個是從快取中取資料,從網路獲取資料也是一個意思,主要是能賦值) List<MainApp.RecentBean> newsList = gson.fromJson(cacheData, new TypeToken<List<MainApp.RecentBean>>() { }.getType()); recentlyAdapter.addData(newsList);//最後給adapter賦值
清空介面的操作就在recentlyAdapter.clearData();這句話。
修改:
之前定義了List的全域性變數
List<MainApp.RecentBean> listRecent = new ArrayList<>();
我在重新整理的時候取消了上面clearData的操作,做了一個判斷
List<MainApp.RecentBean> newsList = gson.fromJson(jso, new TypeToken<List<MainApp.RecentBean>>() {}.getType()); if (listRecent != null && listRecent.size() > 0) { listRecent.clear(); listRecent.addAll(newsList); recentlyAdapter.notifyDataSetChanged(); } else { recentlyAdapter.addData(newsList); // recentlyAdapter.notifyDataSetChanged(); }
先判斷了全域性變數listRecent是否為空以判斷是否第一次獲取資料,如果不是,先將全域性變數清空,然後將最新的資料賦給全域性變數,最後用adapter的notifyDataSetChangerd()方法來重新整理adapter
最後:
問題算是被解決了,但是應該不是最完美的,才疏學淺,希望有人看見了能夠一起交流!