gpt4 book ai didi

android - 为单个数据库列在 selectionArgs 中创建具有多个项目的游标

转载 作者:行者123 更新时间:2023-11-29 01:32:57 25 4
gpt4 key购买 nike

我正在尝试创建一个游标加载器,我想在其中查询两个项目的特定列,类似于:

SELECT * FROM TABLE_NAME WHERE COLUMN_NAME IN(something, something_else);

return new CursorLoader(getActivity(),
myUri,
null,
MyContract.FoodEntry.COLUMN_TYPE + " = ? ",
selectionArgs,
null);

不确定 selectionArgs(它是一个字符串数组)应该是什么样子。有什么方法可以通过此实现实现我想要的吗?

最佳答案

您将需要使用 LIKE关键字并使用 %something 的两边指定通配符和 something_else .

此外,您可能应该使用实例变量来存储这两个字符串,因为我不确定您如何将它们传递给 onCreateLoader() .

我刚刚通过查询我设备上的联系人对此进行了测试,它会让您了解如何使用 selectionArgs .

请注意,对于每个 ?selection参数,您将需要在 selectionArgs 中有一个相应的字符串

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Uri CONTENT_URI = ContactsContract.RawContacts.CONTENT_URI;
String s1 = "Dan";
String s2 = "nugent";
String[] selectionArgs = {"%" + s1 + "%" , "%" + s2 + "%" };
return new CursorLoader(this, CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY + " LIKE ? OR " + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY + " LIKE ?", selectionArgs, null);
}

参见 Documentation Here .

所以对于你的具体例子,它会是这样的:

    String[] selectionArgs =  {"%" + something + "%" , "%"  + something_else + "%" };
return new CursorLoader(getActivity(),
myUri,
null,
MyContract.FoodEntry.COLUMN_TYPE + " LIKE ? OR " + MyContract.FoodEntry.COLUMN_TYPE + " LIKE ?",
selectionArgs,
null);

此外,为了以防万一,这就是我在测试中检索值的方式:

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
if (cursor.moveToFirst()) {
StringBuilder res = new StringBuilder();
while (!cursor.isAfterLast()) {
res.append("\n" + cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY)));

cursor.moveToNext();
}
textView.setText(res);
}

}

我还让 Activity 实现了 LoaderManager.LoaderCallbacks界面:

public class MainActivity extends ActionBarActivity  implements
LoaderManager.LoaderCallbacks<Cursor>{

关于android - 为单个数据库列在 selectionArgs 中创建具有多个项目的游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30218481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com