首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对SimpleCursorAdapter支持的安卓ListView进行文本过滤?

如何对SimpleCursorAdapter支持的安卓ListView进行文本过滤?
EN

Stack Overflow用户
提问于 2010-01-05 06:06:26
回答 2查看 28.8K关注 0票数 18

我有一个由SimpleCursorAdapter支持的ListView。

我希望能够像筛选联系人列表一样过滤列表,只需输入,我就遇到了textFilterEnabled()

问题是,我不知道如何让它与SimpleCursorAdapter一起工作。

这有可能吗?

如果是这样,它是如何做到的?

EN

回答 2

Stack Overflow用户

发布于 2011-02-21 23:49:25

对于SimpleCursorAdapter游标,您只需使用setFilterQueryProvider,根据以下约束为游标运行另一个查询:

代码语言:javascript
复制
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)适配器必须经过过滤:

代码语言:javascript
复制
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);
  }
}

希望这能有所帮助。在接下来的几天里,我会试着写一篇完整的文章,并附上源代码。

票数 24
EN

Stack Overflow用户

发布于 2010-12-01 01:43:15

我发现这篇文章对http://androidcookbook.oreilly.com/Recipe.seam;jsessionid=CE37400B3E545937B70BE2E9F94E78BB?recipeId=404很有帮助

基本上,你在你的listview上使用setTextFilterEnabled(true),在你的SimpleCursorAdapter上使用setStringConversionColumn()setFilterQueryProvider()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2002607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档