- 在设置 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);