关于Listview的ListView.setEmptyView后下拉刷新闪现的问题

来源:互联网 发布:淘宝店铺被投诉侵权 编辑:程序博客网 时间:2024/05/17 18:19
  • 在设置 mListView.setEmptyView(mShowEmptyText);后在我们进行刷新的时候会出现闪现的效果,这样体验很不好的,
  • 看了网上的还是不太行,所以自己找到了一个算是解决方案的方法,大家可以试下
  • ..
  • 1.首先得到这个空视图的控件,

    • mEmptyView = (TextView) mListView.getEmptyView();
    • 我用的是textview,当然可以用imageview;
    • 记住这里必须用这个,如果用原来的mShowEmptyText = (TextView) findViewById(R.id.text_ac_home); 好像后面的设置不管用的!!!
  • 2.这个空视图是在adapter没有数据的时候显示,也就是adapter的notifyDataSetChanged()后,才显示数据,我们有时候会在这之前clear一下,这样就会出现闪现效果….

    • 解决办法就是使用观察者模式DataSetObserver ,讲adapter进行注册,在每次notifyDataSetChanged之前和之后进行操作
private DataSetObserver mDataSetObserver = new DataSetObserver() {        /**         * 当Adapter的notifyDataSetChanged方法执行时被调用         */        @Override        public void onChanged() {            super.onChanged();            //执行空视图显示操作,如果数据为空他就显示,不为空 他不会出来的            mEmptyView.setTextColor(Color.BLACK);        }        /**         * 当Adapter 调用 notifyDataSetInvalidate方法执行时被调用         */        @Override        public void onInvalidated() {            super.onInvalidated();            //执行相应的操作        }    };//注册 mHomeAdapter.registerDataSetObserver(mDataSetObserver);//然后就是在进行网路请求,就是刷新数据之前,    //设置空白或者Gone  mEmptyView.setTextColor(Color.TRANSPARENT);  http(.....)//网路请求方法结束后  //下面这个操作是放在DataSetObserver方法里的onChanged执行的!!!!  mEmptyView.setTextColor(Color.BLACK);
0 0
原创粉丝点击