【问题标题】:How to select from a list of rows using android contentprovider如何使用 android contentprovider 从行列表中进行选择
【发布时间】:2014-01-22 00:19:43
【问题描述】:

我有一个行 ID 列表,我正在尝试使用 contentprovider 查询它们。这是方法和参数:

   Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String      sortOrder)

字符串选择决定了行的 ID。我有一个行 ID 列表并想查询该列表。我将如何实现它?

编辑:

如果有人感兴趣,我终于解决了这个问题。我能够通过使用文本过滤器和 onTextChangedListener 来实现这一点

   EditText itemName = (EditText) v.findViewById(R.id.inputSearch);
    itemName.addTextChangedListener(new TextWatcher() {
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String wildcardQuery = "%" + s + "%";
            Cursor cur = getActivity().getContentResolver().query(
                    DrugContentProvider.CONTENT_URI,
                    null,
                    DataBaseHelper.COLUMN1 + " LIKE ?",
                    new String[]{wildcardQuery},
                    DataBaseHelper.COLUMN2 + " ASC");


            testadapter = new TestPackageAdapter(getActivity().getBaseContext(), cur);

            testadapter.getFilter().filter(s.toString());
            mList.setAdapter(testadapter);
        }

【问题讨论】:

    标签: android


    【解决方案1】:

    您需要创建值列表 (?,?,?...) 参见此处Sqlite Query for multiple values in one column 它应该在内容提供程序中工作相同,因为大多数只是传递到 sqlite 数据库,而您没有不要提及您使用的内容提供商。

    类似于

    cursor = database.query(contentUri, projection, "columname IN(?,?)", new String[]{"value1" , "value2"}, sortOrder);
    

    【讨论】:

    • 我正在使用 android.content.ContentProvider。如果行数发生变化怎么办。我将如何使用 IN 运算符来实现它。它看起来像是预定义了两个 ID。
    • 您需要使用 StringBuilder 或类似的东西并创建 IN(...) 列表。
    • 我尝试使用字符串生成器实现它,但我得到 java.lang.RuntimeException: Caused by: android.database.sqlite.SQLiteException: near "IN": syntax error (code 1): ,编译时: SELECT _id, col_01 FROM table_01 WHERE (_id = IN (150,120)) ORDER BY col_01 ASC
    • 您可能需要使用像 lastname IN ('Hernandez', 'Jones', 'Roberts', 'Ruiz' 这样的引号,但在您的情况下,您应该按照我的示例使用 ? 参数和字符串数组价值。
    • 我放弃了使用这种方法并使用了关系数据库。我创建了一个新表来保存我要查询的表的 ID。这是我使用的示例,androidhive.info/2013/09/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多