Android 使用CursorLoader和自定义CursorAdapter进行ListView筛选

Android 使用CursorLoader和自定义CursorAdapter进行ListView筛选,android,android-listview,android-cursoradapter,android-loadermanager,android-cursorloader,Android,Android Listview,Android Cursoradapter,Android Loadermanager,Android Cursorloader,我目前正在做一个项目,其中包括根据我的当前位置显示附近位置的列表 不久前我刚开始Android编程,所以我仍然处于边编程边学习的阶段 我找遍了所有地方,试图找到一些关于如何进行的线索。在阅读和尝试之后,我仍然被卡住了 我的工作代码目前包括 游标装载机 自定义ResourceCursorAdapter,用于帮助填充ListView上的我的条目 问题 过滤我的ListView条目的“正确”方法是什么?我在Filter/Filterable界面上看到了帖子,但它似乎对我当前的设置不起作用?我是否在

我目前正在做一个项目,其中包括根据我的当前位置显示附近位置的列表

不久前我刚开始Android编程,所以我仍然处于边编程边学习的阶段

我找遍了所有地方,试图找到一些关于如何进行的线索。在阅读和尝试之后,我仍然被卡住了

我的工作代码目前包括

  • 游标装载机
  • 自定义ResourceCursorAdapter,用于帮助填充ListView上的我的条目
问题

  • 过滤我的ListView条目的“正确”方法是什么?我在Filter/Filterable界面上看到了帖子,但它似乎对我当前的设置不起作用?我是否在自定义游标适配器中执行过滤

  • 在执行筛选后,如何刷新ListView?我是否调用getLoaderManager().restartLoader(0,null,this)或adapter.notifyDataSetChanged()

  • 提前感谢。

    使用
    getLoaderManager().restartLoader(LOADER\u ID,null,MainActivity.this)
    调用创建加载器上的
    onCreateLoader

    私有字符串过滤器;
    公共布尔值onOptionsItemSelected(菜单项项){
    开关(item.getItemId()){
    案例R.id.action_过滤器:
    filter=“COLUMN\u NAME=value”;
    getLoaderManager().restartLoader(LOADER_ID,null,MainActivity.this);
    打破
    违约:
    打破
    }
    返回super.onOptionsItemSelected(项目);
    }
    @凌驾
    public android.content.Loader onCreateLoader(int-id,Bundle-args){
    返回新游标装入器(
    MainActivity.this,//父活动上下文
    SomeContentProvider.CONTENT\u URI,//要查询的表
    projection,//要返回的projection
    筛选器,//无选择子句
    null,//没有选择参数
    null//默认排序顺序
    );
    }
    
    文字上有点稀疏,但这是一个有用的概念。向上投票。
    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
                    );
    
        }