2012-02-26 7 views
1

3つのタブを持つ1つのアクティビティでListViewをフィルタリングする必要があります。たとえば、すべてのデバイス(カスタムオブジェクト)に関する情報が表示される1つのタブがありますが、他のタブに変更すると「type1」のデバイスが表示され、最後のタブに変更すると"type2"。タブが変更されたときのリストビューの表示

私は既にカスタムアダプタを持っていますが、Filterableインターフェイス(... Filterable ...を実装できます)を使用してgetFilter()メソッド(editTextに基づくフィルタリングなど)をオーバーライドするかどうかを知りたい場合、別の方法を使用しますか?

あらゆる種類のヘルプに感謝します。

答えて

1

私はこの(onCreate()で)のように、onTabChanged()方法を使用してこの問題を解決:

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やfilterableを使用していませんが、あなたはそれらを一緒に使う必要があると言いました。

もう1つの考えられる方法は、あなたのためにフィルタリングするonclicklistenerを設定することです。これを描写するのに少し問題があります。もし私が正しい考えを持っていれば。 〜100個のアイテムが表示されます。次に、タブをクリックすると〜50が表示されます。その後、他のタブをクリックすると、他の〜50のショーが表示されます。最後のタブをクリックするとすべてが再び表示されますか?

+0

はい、それは、多かれ少なかれです。私はすでにそれをしています。私の活動の中で私はリスナーOnTabChangeを使用し、現在のタブ(tabHost.getCurrentTab())にしたがってmyAdapter.getFilter()。filter( "String")のようにフィルタに渡す文字列を選択します。カスタムアダプタの中では、getFilterメソッドをオーバーライドし、Filterを拡張するクラスを実装しました。 – amp

関連する問題