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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM