2011-03-15 72 views
0

背景:
我具有基於其延伸BaseAdapter一個相當複雜的適配器的GridView。我發現我在getView中做了太多工作來計算要顯示的內容,並且通常在這些計算過程中我想要顯示的項目數量發生了變化。 getView甚至會爲同一位置調用多次。它看起來像notifyDataSetChanged()得到調用太快。Android:是否可以將GridView基於具有過濾器功能的適配器?

這在我的編碼中造成了很大的痛苦。我將大部分代碼移到了其他例程中,但是在最終顯示過程中仍然需要對選擇進行一些篩選。

我已經通過設置item.enabled(false)來解決這個問題,它可以工作,但我寧願將所有項目都放在一起。

我找不到的GridView的 &基本適配器一個生命週期,但我已經確定,getCount將()被調用的次數時顯示的項目之前,雖然我可以鉤在那裏我的變化,感覺就像我在這裏努力工作一樣。

問題:
我可以使用連接的過濾類的適配器綁在GridView的

例如,我的用於的GridView適配器有36個項目進行顯示,並且其含有它具有的TextView設置爲值「3」,這意味着只顯示每第三項活性的影響。 adapter.notifyDataSetChanged()被調用,並立即.getCount()想回到36,從而真正弄亂與getView

我知道有沒有很多細節在這裏,因爲我需要了解概念,而不僅僅是爲特定問題尋找解決方案。

必須有一些功能或方法來查看我忽略的問題。

回答

2

你被覆蓋getCount?爲什麼在底層數據發生變化後它會返回36?

如果您getCount依賴於基礎數據,我不認爲你會這樣的問題:

@Override 
public int getCount() { 
    return myArray.length; // or whatever your underlying data source is 
} 

編輯 - 此外,還要確保您更改您的數據之前通話設置notifyDataSetChanged

相關問題