Adapter刷新数据的坑
adapter刷新数据的时候,要能够刷新成功,要保证每次刷新的时候都是改变数据源。
于是,我这样做了,在适配器的构造方法里面写到:
private List<ListBean> listItems = new ArrayList<>(); private Context mContext; public ResultAdapter(Context context, List<ListBean> listItems) { super(context); this.mContext = context; this.listItems = listItems; }
刷新数据的时候调用adapter里面的方法:(用这种方法每次刷新都是改变adapter里面的数据源,保证每次都能够刷新成功,这种思路是没错的,然而,我犯放了一个错误,导致刷新后数据被清空了)
/** * 刷新数据 * * @param listItems * @param keyWord */ public void setData(List<ListBean> listItems) { if (listItems != null) { this.listItems.clear(); this.listItems.addAll(listItems); } notifyDataSetChanged(); }
我犯了什么错误呢?
我的构造方法错了,在adapter的构造方法里面,我用的是
this.listItems = listItems;
这样子传进去的listItem与adapter里面的listItem指向同一个对象,在刷新数据的方法中,我用了
if (listItems != null) { this.listItems.clear(); this.listItems.addAll(listItems); }
adapter里面的listItems被清空了,导致外部传进来的listItem也被清空了,于是this.listItems.addAll(listItems);后依然为空,最终刷新数据后无反应。
转载请标明出处:http://www.cnblogs.com/tangZH/p/8535653.html
相关推荐
wellfly 2020-01-10
绿豆饼 2019-10-20
89550492 2011-09-13
喝绿茶的猫 2015-05-30
llzhangfly 2012-11-26
Colphin 2019-06-28
onlyring的文档库 2012-05-31
康 2014-12-12
lxypeter 2010-09-17
guanguanmeng 2019-06-21
XiaoMuFireAnt 2009-09-02
vincent 2012-03-05
柒青衿 2011-12-27
leverage00 2016-06-23
NASA00 2013-04-06
yuyu00 2013-01-28
quickisbest 2013-01-22
Leo的memo 2012-12-12