2012-04-03 14 views
1

リストビューとそのアダプタがグローバル変数として格納されています。私はListActivityを拡張してリストを作成していません。次のように私のコードは次のとおりです。リストの検索がAndroidで機能していない

public void onCreate(Bundle...) { 
    mListView = (ListView) findViewById(R.id.listview1); 
    //setting my custom array adapter...works fine. 
    //also my custom adapter implements Filterable interface 
    mListView.setAdapter(...) 
    mListView.setTextFilterEnabled(true); 

    //My edit text where I enter my query 
    mSearchEditText = (EditText) findViewById(R.id.searchEditText); 
    mSearchEditText.addTextChangedLIstener(myListener); 
} 

private TextWatcher myListener = new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (s == null || s.length() == 0) { 
      mListView.clearTextFilter(); 
     } 
     else { 
      mListView.setFilterText(s.toString()); 
     } 
    } 
    ... 
    ... 
} 

私の問題は、私はエディットテキストで私の文字列を入力すると、それは私が私のリストで利用可能な検索項目(数字のみ)の何を修正ではなく、項目自体は与えていないです。例えば

私のリストはなくBB項目AA、BB、CC、DD、FF、EE、EEだから私はEEを検索する場合

は、私の結果はAAになりますが、持っている場合ee、eeccを検索すると、フィルタリストにaaと表示されます。

誰もが私にこれを助けることができますか?

答えて

4

I作業例を持って、これを試してください:

filterEditText = (EditText)findViewById(R.id.filter); 
filterEditText.addTextChangedListener(filterTextWatcher); 

TextWatcher filterTextWatcher = new TextWatcher() { 

     public void beforeTextChanged(CharSequence s, int start, int count,int after) { 

     } 
     public void onTextChanged(CharSequence s, int start, int before,int count) { 
      adapter.getFilter().filter(s); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub    
     } 
    }; 

アダプタをしなければならない だから、あなたのリストビューに設定されたアダプタの参照を保持し、あなたのテキストの変更リスナーにこのような何かを試してみてください

  @Override 
      public Filter getFilter() { 
//    Filter filter = null; 

       if(filter == null) 
        filter = new CheeseFilter(); 
       return filter; 
      } 

implements Filterableそしてフィルタークラス:

0123あなたはより多くの情報のため、この記事をチェックすることができ

Filter expandableList

Filter ListView

+0

私はそれに取り組んでいます。一度完了するとあなたに戻ってきます。 – AndroDev

+0

ビンゴ...それは働いた。ありがとう。 – AndroDev

+0

あなたは大歓迎です:) – Chronos

0

メイトリストビューではなくアダプタに設定する必要があります。

private TextWatcher myListener = new TextWatcher() 
{ 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    { 
     myadapter.getFilter().filter(s); 
    } 
    ... 
    ... 
} 
+0

私はすでにこれを試してみましたが、それは二つの問題があります:私は上記のように 1.同じ。 2.編集テキストからテキストをクリアすると、リストビューも完全に見えません。 – AndroDev

+0

うーん、私はあなたがこれを試すことができると思います。これは古風な方法で行います:http://androidsearchfilterlistview.blogspot.co.uk/ –

関連する問題