Я впроваджую Постачальник вмісту на Android. Мені б хотілося, щоб у моєму запиті було шукати не просто точні збіги - чи є спосіб вказати запит "як" у способі запиту постачальника вмісту?
Поточний код. Зауважте, що mSearchString
- це рядок, який надає користувач - я зараз використовую її для запиту UserDictionary
, і єдиний спосіб повернути що-небудь - це якщо mSearchString
точно відповідає слову в UserDictionary
. Мені б хотілося відповідати частковим запитам (наприклад, якщо у словнику є яблуко, тітка і практичні, я б хотів шукати "а" і повертати їх усі).
mSelectionClause = UserDictionary.Words.WORD + " = ?";
// Moves the user"s input string to the selection arguments.
// Remember to add code here to check for invalid or malicious input.
mSelectionArgs[0] = mSearchString;
// Does a query against the table and returns a Cursor object
Cursor mCursor = getContentResolver().query(
UserDictionary.Words.CONTENT_URI, // The content URI of the words table
mProjection, // The columns to return for each row
mSelectionClause, // Either null, or the word the user entered
mSelectionArgs, // Either empty, or the string the user entered
mSortOrder);
Відповіді:
1 для відповіді № 1я використовую SQLiteDatabase
(не використовується getContentResolver()
і я не знаю, що це таке), але я можу шукати слова like
заданий візерунок (названий pattern
) використовуючи цей код, тому оскільки синтаксис виглядає однаково, я думаю, що він може працювати для вас:
String whereClause = "word like ?";
String[] wildCardReplacements = {pattern};
cursor = database.query(TABLE_NAME, mColumns, whereClause,
wildCardReplacements, null, null, null);
Так що якщо pattern
містить %a%
, Я "отримаю" яблуко, тітку і, практичне "та багато інших.
У випадку, якщо це не очевидно, у вашому випадку щось подібне mSearchString = "%" + mSearchString + "%"
дозволить користувачеві просто входити a
(наприклад) і отримати бажані відповідники.
П.С. database
визначається як android.database.sqlite.SQLiteDatabase
.