關於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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章