android自定义建议不会出现

标签 android

我阅读了有关搜索建议的文档,并且几乎实现了所有内容。

它要求我制作一个content provider,然后从它的query 方法返回一个cursor

这是我做的:

public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        String[] mColumnNames={SearchManager.SUGGEST_COLUMN_TEXT_1,SearchManager.SUGGEST_COLUMN_TEXT_2, BaseColumns._ID};
        String query = uri.getLastPathSegment().toLowerCase(); //Logging gives me the string
        MatrixCursor matrixCursor=new MatrixCursor(mColumnNames);
        int i=0;
        for(Song song:songs){
            if(song.getTitle().toLowerCase().contains(query)){
                matrixCursor.addRow(new Object[]{song.getTitle(),song.getArtist(),song.getId()});
            }
        }
        return matrixCursor;
    }

我记录了 query 字符串并且我正在获取日志但我没有看到任何建议?

我必须制作自己的适配器还是默认的适配器就足够了?

没有提到建议的观点,只是说我必须返回一个游标,其中两列是强制性的。

我错过了什么吗?

附言:

  • getTitle() & getArtist() 返回 string
  • getId() 返回 long

更新:

更改了代码并删除了循环。

String[] mColumnNames={SearchManager.SUGGEST_COLUMN_TEXT_1,SearchManager.SUGGEST_COLUMN_TEXT_2, BaseColumns._ID};
        String query = uri.getLastPathSegment().toLowerCase();
        MatrixCursor matrixCursor=new MatrixCursor(mColumnNames);
        matrixCursor.addRow(new Object[]{"asasas","aaa",(long)1});

        return matrixCursor;

这也行不通

最佳答案

嗯,似乎没有人感兴趣。

我找到了它不起作用的原因。

列的顺序必须正确,即第一列和第二列必须是 _idSearchManager.SUGGEST_COLUMN_TEXT_1

MatrixCursor mc=new MatrixCursor(new String[]{"_id",SearchManager.SUGGEST_COLUMN_TEXT_1,SearchManager.SUGGEST_COLUMN_TEXT_2});

这在搜索对话框中给了我指定的结果。

关于android自定义建议不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917200/

相关文章:

android - 错误 :Execution failed for task ':app:transformClassesWithDexForDebug' - for multidex app

android - 如何使用 Kotlin 在 Android 中共享图像?

java - 如何在单击按钮时从 ArrayList 和 ArrayAdapter 中删除所选项目?

android - 从 AWS Lambda Node.js 向 Android 手机发送 AWS SNS 通知

android - FusedLocationProviderApi 的替代方案

android - 如何在 flutter 视频播放器中设置边框半径?

java - 格式化时间计​​数器字符串,例如260 至 00 :00:00 in android

android - 抽屉导航刷新/重新加载

php - 为什么用户名在数据库中注册为空?

android - 在我的应用程序中使用两个不同版本的 okhttp 库是否可以?