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 ,http://77blogs.com/?p=632
