RecyclerView的数据更新问题

前言

最近在写一个天气预报的APP,主要模仿的是xcc3641/SeeWeather,感兴趣的童鞋可以去看一下,非常适合学习。
本人自己的APP地址:https://github.com/w-zm/HelloWeather,主要没有用到原APP的RxJava,还有很多功能也还没有,希望边模仿边实习,还在实现中。

正文

相信很多人都应该知道RecycleRecyclerView的基本用法,如果不知道,请参考:
http://guides.codepath.com/android/Using-the-RecyclerView

概览

好了,假设你已经基本了解了RecyclerView的用法,正如上述文章中讲的那样,RecyclerView跟ListView不一样,当我们想要更新数据的时候,有两种情况:
1、dataset为List,也通常是这样:
* dataList = createDataList(5); //这是错误的做法,dataList为初始传入的List
* dataList.addAll(createDataList(5)); //这是正确的做法

我们想要更新数据的时候,请记住这句话“whenever adding or removing elements, always make changes to the existing list”,也就是说,请在原数据集上更新你的数据,而不是用一个新的数据集替代,记得最后要 mAdapter.notifyDataSetChanged()一下哟。

2、还有一种情况,就是我们的dataset是一个类对象,此时应该怎么办呢?
其实也很简单(MD我想了很久,坑啊!),那我正在写的APP为例子,

不完整截图

上面是部分截图,由于还没完成,布局暂时还很丑,请见谅。其实上面的就是一个“异质”的RecyclerView,数据都是一个类对象的数据,Adapter的构造函数为:

现在的需求是每次下拉刷新天气数据的时候,更新weather,一开始我的做法是:weather = new Weather(…), 只要你看了上面(一开始想了好久啊),就应该知道这是错的了,后来想到了两个办法解决:
(1)借鉴的SeeWeather的做法:对weather对象的每个字段进行赋值:

(2)传入List,只不过这个List只有一个Weather对象,然后就可以每一次把原来的remove掉,再添加上新的Weather对象。如下:
dataList.clear(); //去掉之前的数据
dataList.add(weather); //添加新的Weather对象
mAdapter.notifyDataSetChanged();

好了,关于RecyclerView的数据更新问题基本就这样了,这是本人第一次写blog, 有许多做得不好的地方请各位指正,朕会听的,开玩笑的,哈哈。
最后的最后,欢迎学习交流,本人邮箱: <354242964@qq.com>。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值