2012-03-01 6 views
2
adapter = new ArrayAdapter<String(getApplicationContext(),android.R.layout.simple_list_item_multiple_choice,contactList); 
    setListAdapter(adapter); 

連絡先リストをフィルタリングするために使用するListActivityの上にEditTextがあります。しかし、私はフィルタリングするために、以下のコードを使用します。どのように腐食性のチェックボックスを文字列でフィルタリングする必要がありますか

search.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 

       adapter.getFilter().filter(arg0); 

      } 
} 

各項目に関連付けられた文字列値のみが除外されますが、それに関連付けられたチェックボックスは同じままです。

例。 3つの連絡先「A」、「B」、「C」があるとします。私はこのListActivityを開いて "A"を選択します。今私は連絡先 "C"(検索ボックスに "C"を入力することによって)を検索すると、連絡先がフィルタを取得し、私は上部に連絡先 "C"を見ることができます。しかし、それはすでに選択されていることを示しています。実際には、そうではありません... "C"に関連するチェックボックスが決して短絡されていないためです...そして、現在のチェックボックスは "C"と関連付けられているようです。

フィルタリングを同期させるにはどうすればよいですか?私も同様にこの問題に見舞われた

+0

お手伝いしましょう。これが役立つかどうかを確認してください:http://stackoverflow.com/questions/1645209/how-can-i-filter-listview-data-when-typing-on-editext-in-android – AJcodez

+0

@AJcodez返信ありがとうございました....私もカスタムアダプターを使ってやっていると思っています。 –

+0

ええ、あなたは何が起こってはいけないと思っているのですか?おそらく各項目のための独自のレイアウトを作る?それはフィルタリングでリストから項目全体を削除する必要があります。 – AJcodez

答えて

0

を.pngを

after A is selectedメートルwhen filter in actionは、私に従って/未チェックチェックすると、私はそれぞれのビューを設定した、独自のカスタムアダプタでArrayAdapterを拡張し、getViewをオーバーライドすることで、それを解決しましたフィルタリングされていないリスト。

は、これは私のgetViewメソッドのコードです:

 @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      CheckBox view = (CheckBox) super.getView(position, convertView, parent); 

      MyObject object = getItem(position); 

      view.setChecked(object.selected); 
      view.setOnClickListener(MyClass.this); 

      return view; 
     } 

私もMyClassのは、クリックされたMyObjectにの選択状態を切り替えると呼び出すために、onClickListenerを実装しなければならなかったmyAdapter.notifyDataSetChanged();

あなたがに独自のカスタムアダプタを作ってみることができ
関連する問題