使用CursorLoader和Custom CursorAdapter进行ListView过滤

时间:2013-09-30 13:41:39

标签: android android-listview android-cursoradapter android-loadermanager android-cursorloader

我目前正在开展一个项目,该项目涉及根据我当前的位置显示附近的位置列表。

我刚刚开始使用Android编程,所以在编码阶段我还在学习。

我搜索了所有试图得到一些关于如何继续的线索。我在阅读和尝试后仍然感到困惑。

我的工作代码目前包含

  • CursorLoader
  • 自定义ResourceCursorAdapter,帮助填充ListView上的条目

问题

  1. 什么是"正确"过滤我的ListView条目的方法?我看过Filter / Filterable界面上的帖子,但它似乎不适用于我目前的设置?我是否在Custom CursorAdapter中执行过滤?

  2. 执行过滤后,如何刷新ListView?我是否调用getLoaderManager()。restartLoader(0,null,this)或者adapter.notifyDataSetChanged()?

  3. 提前致谢。

1 个答案:

答案 0 :(得分:13)

使用getLoaderManager().restartLoader(LOADER_ID, null, MainActivity.this);来回忆onCreateLoader

Android developer site example

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
                );

    }