Ich implementiere einen Inhaltsanbieter auf Android. Ich möchte, dass meine Abfrage nach mehr als nur genauen Übereinstimmungen sucht. Gibt es eine Möglichkeit, eine "Gefällt mir" -Abfrage in der Abfragemethode des Inhaltsanbieters anzugeben?
Aktueller Code. Beachten Sie, dass mSearchString
ist eine Zeichenfolge, die der Benutzer bereitstellt - ich verwende sie derzeit zum Abfragen der UserDictionary
und der einzige Weg, etwas zurückzugeben, ist wenn mSearchString
passt genau zu einem Wort in der UserDictionary
. Ich möchte in der Lage sein, Teilabfragen abzugleichen (wenn beispielsweise Apfel, Tante und Praktisch im Wörterbuch enthalten sind, möchte ich nach "a" suchen und alle zurückgeben).
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);
Antworten:
1 für die Antwort № 1ich benutze SQLiteDatabase
(nicht verwenden getContentResolver()
und ich weiß nicht was es ist), aber ich kann nach Wörtern suchen like
ein gegebenes Muster (benannt pattern
) Verwenden Sie diesen Code. Da die Syntax also gleich aussieht, kann ich mir vorstellen, dass dies für Sie funktionieren könnte:
String whereClause = "word like ?";
String[] wildCardReplacements = {pattern};
cursor = database.query(TABLE_NAME, mColumns, whereClause,
wildCardReplacements, null, null, null);
Also, wenn pattern
enthält %a%
Ich würde Apfel, Tante und, praktisch und viele andere bekommen.
Für den Fall, dass es nicht offensichtlich ist, in Ihrem Fall so etwas mSearchString = "%" + mSearchString + "%"
würde dem Benutzer erlauben, nur einzutreten a
(zum Beispiel) und erhalten Sie die gewünschten Übereinstimmungen.
P.S. database
ist definiert als ein android.database.sqlite.SQLiteDatabase
.