使用CursorLoader和自定义CursorAdapter进行ListView过滤

6
我目前正在进行一个项目,需要根据我的当前位置显示附近地点的列表。
我刚开始学习Android编程,所以我还处于学习和编码阶段。
我搜索了很多地方,试图找到一些线索来继续进行。但是在阅读和尝试之后,我仍然卡住了。
我的工作代码目前包括:
- CursorLoader - 一个自定义的ResourceCursorAdapter,帮助在ListView上填充我的条目
问题:
1.什么是为我的ListView过滤条目的“正确”方法?我看到了有关Filter/Filterable接口的帖子,但它似乎对我的当前设置无效?我应该在自定义CursorAdapter中执行过滤吗?
2.在过滤后如何刷新我的ListView?我应该调用getLoaderManager().restartLoader(0, null, this)还是adapter.notifyDataSetChanged()?
提前感谢您。
1个回答

14

使用getLoaderManager().restartLoader(LOADER_ID, null, MainActivity.this);来重新调用onCreateLoader

Android开发者网站的示例

private String filter;
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_filter :
            filter = "COLUMN_NAME = value";
            getLoaderManager().restartLoader(LOADER_ID, null, MainActivity.this);           
            break;          
        default:
            break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public android.content.Loader<Cursor> onCreateLoader(int id, Bundle args) {

        return new CursorLoader(
                MainActivity.this,   // Parent activity context
                SomeContentProvider.CONTENT_URI,        // Table to query
                projection,     // Projection to return
                filter,            // No selection clause
                null,            // No selection arguments
                null             // Default sort order
                );

    }

2
有点简洁,但是是一个有用的概念。点赞。 - Anderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接