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