2012-02-23 15 views
5

listViewEditTextボックスを使用し、アダプタgetFilter()の機能を使用してフィルタリングしたいですか?テキストボックスにスペース文字を入れるまではうまく動作します。androidのフィルタListView - 空白文字

編集:私は「りんご」と入力した場合{「アップル」、「バナナ」、「レッドアップル」} それがすべて返されます:私のリストは、これらの言葉が含まれている場合はそれSimpleAdapterが

をArrayAdapterていませんAppleにAppleという言葉を含む項目(AppleとRed Apple)。 「apple」と入力すると何も返されません。

アイデア?

searchBox = (EditText) findViewById(R.id.searchBox); 

searchBox.addTextChangedListener(filterTextWatcher); 

private TextWatcher filterTextWatcher = new TextWatcher() { 

public void onTextChanged(CharSequence s, int start, int before, int count) { 
    // TODO Auto-generated method stub   
} 

public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
    // TODO Auto-generated method stub   
} 

public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 
    myAdapter.getFilter().filter(s.toString()); 
} 
}; 
+0

あなたはこれを理解したことがありますか? –

+0

申し訳ありません。私は解決策は、ArrayAdapterに基づいて独自のアダプタを作成するかもしれないと思うが、私は試していない(そのプロジェクトの作業を停止)。 – Chris911

+0

@CaptainProgあなたはどんなタイプの答えをお探しですか? 'trim()'を使って提起された元の質問をもって最良の答えです。 – Sam

答えて

2

SimpleAdapterからフィルタリング機能は、お使いのフィルタリング要件を満たしていない場合は、上書きする必要があります。ここでは、コードですSimpleAdapterを実装し、独自のフィルタリング要件を実装します。

これは、SimpleAdapterのフィルタでは、複製が必要な多くのプライベートオブジェクトを使用しているため、多くのコードが必要です。 ArrayAdapter

Fortunatly、他の誰か(@uʍopǝpısdn)は既にプロセスに行き、コードを書いてコミュニティで利用できるようにしました。

hereのリンクは、例の使用方法やhereのコードなどがあります。

よろしくお願いいたします。

+0

これは唯一有効な解決策だと思います。私はこの質問をして以来、私はもうこのプロジェクトに取り組んでいませんが、私は検証しようとします。ありがとう。 – Chris911

+0

正確に。説明されている問題は、次の行によって発生します。 'String [] words = str.split(" ");' ** SimpleAdapter.SimpleFilter **クラスでは、単に初期文字列のスペースを省略して単語に分割します。 –

+0

@ルイス私は同様の問題があり、http:// stackoverflowという質問を投稿しました。com/questions/39573432/get-filter-does-not-work-for-in-android私はあなたが助けてくれることを願っています。 – AndroidNewBee

2

これを使用してみてください:

myAdapter.getFilter().filter(s.toString().trim()); 
+0

これは部分的にしか機能しませんが、空白は削除されますが、 "Red Ap"と入力すると "RedAp"にトリムされ、 "RedAp"を含む選択肢には単語がありません。だから、基本的に言葉の前後に単一の単語を置いても、私が望む結果を与えることはできません。 – Chris911

+2

@ Chris911:実際にはトリミングされません。つまり、テキストの開始と終了の前後に空白が削除されるだけです。「apple」と入力すると、「apple」とトリムされますが、赤いap "、それはit.Gotポイントとしてそれを取るだろうか? – Hiral

+0

ヒラリーの説明に感謝しますが、それでも問題は解決しません。私はこれを行う唯一の方法は自分のフィルターで自分のアダプターを実装することだと考え始めています。 – Chris911

関連する問題