我需要使用三個選項卡在一個活動中過濾ListView。例如,我有一個選項卡,其中顯示有關所有設備(自定義對象)的信息,但是當我切換到其他選項卡時,它應該顯示「type1」的設備,當我切換到最後一個選項卡時,顯示設備「TYPE2」。我已經有一個自定義的適配器,我想知道我是否可以使用Filterable接口(...實現Filterable ...)並重寫getFilter()方法(如基於editText的過濾),或者我應該使用另一種方法?更改選項卡時的過濾器列表視圖
感謝您的幫助。
我需要使用三個選項卡在一個活動中過濾ListView。例如,我有一個選項卡,其中顯示有關所有設備(自定義對象)的信息,但是當我切換到其他選項卡時,它應該顯示「type1」的設備,當我切換到最後一個選項卡時,顯示設備「TYPE2」。我已經有一個自定義的適配器,我想知道我是否可以使用Filterable接口(...實現Filterable ...)並重寫getFilter()方法(如基於editText的過濾),或者我應該使用另一種方法?更改選項卡時的過濾器列表視圖
感謝您的幫助。
我解決這個使用onTabChanged()
方法,像這樣(在onCreate()
):
mTabHost.setOnTabChangedListener(new OnTabChangeListener() {
public void onTabChanged(String tabId) {
Log.d(debugTag, "onTabChanged: tab number=" + mTabHost.getCurrentTab());
switch (mTabHost.getCurrentTab()) {
case 0:
myDevAdapter.getFilter().filter("all");
break;
case 1:
myDevAdapter.getFilter().filter("type1");
break;
case 2:
myDevAdapter.getFilter().filter("type2");
break;
default:
Log.d(debugTag,"error in onTabChanged");
break;
}
}
});
我還沒有使用onfocuschange或過濾器,但從你說的聽起來像你將需要一起使用它們。
另一種可能的方法是設置一個onclicklistener來爲你過濾。有點小麻煩描繪了這一點。如果我有正確的想法。你會顯示〜100項。然後點擊一個標籤並顯示〜50。然後點擊另一個標籤,另一個~50顯示。點擊最後一個標籤,並再次顯示?
是的,它是更多或更少。我已經這樣做了。在我的活動內部,我使用了一個監聽器OnTabChange,並根據當前選項卡(tabHost.getCurrentTab())選擇了我想要傳遞給過濾器的字符串,如myAdapter.getFilter()。filter(「String」)。在我的自定義適配器內部,我重寫了getFilter方法,並且實現了一個擴展Filter的類。 – amp 2012-03-06 11:07:26