18

SimpleCursorAdapterに裏打ちされたListViewがあります。

入力するだけで、連絡先リストと同じようにリストをフィルタリングできるようにしたいと思います。textFilterEnabled()に出くわしました。

問題は、SimpleCursorAdapterで動作させる方法がわからなかったことです。

これも可能ですか?
もしそうなら、それはどのように行われますか?

4

3 に答える 3

24

SimpleCursorAdapterカーソルの場合、制約に基づいてカーソルに対して別のクエリを実行するには、setFilterQueryProviderを使用するだけで済みます。

m_Adapter.setFilterQueryProvider(new FilterQueryProvider() {

  public Cursor runQuery(CharSequence constraint) {
    Log.d(LOG_TAG, "runQuery constraint:"+constraint);
    //uri, projection, and sortOrder might be the same as previous
    //but you might want a new selection, based on your filter content (constraint)
    Cursor cur = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    return cur; //now your adapter will have the new filtered content
  }

});

制約が追加された場合(たとえば、TextViewを使用して)、アダプターをフィルター処理する必要があります。

public void onTextChanged(CharSequence s, int start, int before, int count) {
  Log.d(LOG_TAG, "Filter:"+s);
  if (m_slvAdapter!=null) {
    m_Adapter.getFilter().filter(s);
  }
}

お役に立てれば。今後数日で、ソースコードを含む完全な記事を書こうと思います。

于 2011-02-21T15:49:24.993 に答える
7

このメソッドは、テキスト内のsetTextFilterEnabled()に対してフィルタリングする必要があるかがわからないため、フィルタリングを自動的に実装しません。Cursor

このandroid-developersスレッドに詳細があります。

実は、先日、あなたの質問と非常によく似た良い質問がありました。もともとは、デバイスに物理キーボードがない場合にフィルタリングを処理する方法を尋ねていましたが、次のようになります。

于 2010-01-05T04:04:10.887 に答える
0

この記事は役に立ちましたhttp://androidcookbook.oreilly.com/Recipe.seam;jsessionid= CE37400B3E545937B70BE2E9F94E78BB?recipeId = 404

基本的に、あなたsetTextFilterEnabled(true)はあなたのリストビューにあり、あなたはとを使用setStringConversionColumn()setFilterQueryProvider()ますSimpleCursorAdapter

于 2010-11-30T17:43:15.470 に答える