我在我的Android應用程序上有一個ListView,可以動態更改數據。我使用onFilterComplete()
方法來更改ListView的內容。Android ICS ListView刷新問題
預冰淇淋三明治下面的代碼工作正常:
if(adapter != null) {
adapter.notifyDataSetInvalidated();
lview3.invalidateViews();
adapter.getFilter().filter(aa1.getItem(item), new Filter.FilterListener() {
public void onFilterComplete(int count) {
adapter.notifyDataSetChanged();
if(lview3.getCount() == 0){
lview3.setVisibility(View.GONE);
}
else{
lview3.setVisibility(View.VISIBLE);
}
}});
然而冰淇淋三明治當我使用過濾器的屏幕不會在刷新正確,如果過濾器返回的條目數是比以前的ListView較小然後將舊錶的數據似乎仍然可見的背景下,按照這個屏幕截圖:
從屏幕截圖,你可以看到在第一項ListView是,這應該是可見的,你可以看到之前的結果在底下仍然可見,這些只是可見的,它們不起作用,因爲它們無法被竊聽,就好像屏幕沒有正確刷新。
當我選擇home鍵離開通過主屏幕上的應用程序並返回看來一切,因爲它應該在下面的屏幕截圖:
有沒有別的東西,我得落實正確刷新冰淇淋Sandwich上的ListView?有沒有其他人遇到類似的問題?
我在ICS前工作得很好。
當你說「舊的listview」時,你真的只是指適配器中的舊數據,對吧?或者有多個'ListView'在彼此之上? –
對不起,我的意思是適配器中最後一次過濾的數據,在佈局中只有一個ListView,並且只有一個ListView在代碼中,而不是多個。當我離開屏幕並返回ListView時,它應該在第二個屏幕截圖。 –
正如我所見,過濾器應該已經在適配器上調用了datasetChanged,因此您可能不必這樣做。我不知道這是否可以解釋您的問題,但值得註釋和嘗試。 –