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

  • 在设置 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值