2012-02-26 70 views
1

我需要使用三個選項卡在一個活動中過濾ListView。例如,我有一個選項卡,其中顯示有關所有設備(自定義對象)的信息,但是當我切換到其他選項卡時,它應該顯示「type1」的設備,當我切換到最後一個選項卡時,顯示設備「TYPE2」。我已經有一個自定義的適配器,我想知道我是否可以使用Filterable接口(...實現Filterable ...)並重寫getFilter()方法(如基於editText的過濾),或者我應該使用另一種方法?更改選項卡時的過濾器列表視圖

感謝您的幫助。

回答

1

我解決這個使用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; 
      } 
     } 
    }); 
0

我還沒有使用onfocuschange或過濾器,但從你說的聽起來像你將需要一起使用它們。

另一種可能的方法是設置一個onclicklistener來爲你過濾。有點小麻煩描繪了這一點。如果我有正確的想法。你會顯示〜100項。然後點擊一個標籤並顯示〜50。然後點擊另一個標籤,另一個~50顯示。點擊最後一個標籤,並再次顯示?

+0

是的,它是更多或更少。我已經這樣做了。在我的活動內部,我使用了一個監聽器OnTabChange,並根據當前選項卡(tabHost.getCurrentTab())選擇了我想要傳遞給過濾器的字符串,如myAdapter.getFilter()。filter(「String」)。在我的自定義適配器內部,我重寫了getFilter方法,並且實現了一個擴展Filter的類。 – amp 2012-03-06 11:07:26

相關問題