zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JavaScript中的面向对象
    操作文件
    PDO 数据访问抽象层
    Jquery事件
    Jquery
    面向对象的五大基本原则是
    ioc依赖注入的原则
    java3
    java基础2
    java基础
  • 原文地址:https://www.cnblogs.com/tangZH/p/8535653.html
Copyright © 2011-2022 走看看