前言:
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
最后:
问题算是被解决了,但是应该不是最完美的,才疏学浅,希望有人看见了能够一起交流!