ListView無法執行getView()的幾種可能問題

在遇到這個問題過後,在網上翻閱了一些資料,找到了一些思路,一下問題的解釋來自一位大神,覺得非常有用,就收藏記錄下來。


 listview是一個比較常用的控件,爲了適應自己需要的效果往往會繼承baseadapter去實現自定義的適配器。

       在該適配器中出錯最多的應該是getview()了。

       從接觸listview控件開始,第一個報的錯就是關於getview()的。昨天有人問了我一個同樣是不執行getview()的問題,所以我覺得有必要去寫一篇博文記錄一下。算是自己學習總結了。

       第一、沒有執行getview往往是因爲沒有顯示頁面。

                  這個時候,我們首先要保證確實有有效的數據傳到了自定義的適配器裏。因爲如果getcount()的返回值是0的話,getview是不會被執行的。

       第二、要確認adapter在覈實的時間和位置去實例化,比如說在異步任務的onPostExecute()方法中去實例化adapter的話,甚至會導致該方法也不會被執行到,當然getview更執行不到了。

   第三、佈局的問題。在xml文件中,有些屬性會極大的影響到getview的執行。他執行的前提是,他有空間去展示。

        當你將listview設置爲gone的時候,他是不會去執行這個方法的。在適配數據前將他改爲可見就好了。

        另外一個就是昨天晚上朋友遇到的那個問題。將父佈局設置成Android:layout_height="wrap_content",因爲頁面的測量是在oncreate的時候被測量的。而此時裏面是沒有內容的,也就是高度爲0,在數據加載好之後,父佈局並沒有重新測量,而只是listview重新測量了,但是因爲listview此時的高度是0,所以getview()還是無法被執行到。將android:layout_height="wrap_content"改成android:layout_height="match_parent"就好了

    這個是我遇到的一些問題和解決方案。有什麼問題的話,請各位大神指導。

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