/ / Durchführen von "Gefällt mir" -Abfragen in Android Content Provider - Java, Android

Ausführen von "Like" -Abfragen in Android Content Provider - Java, Android

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 UserDictionaryund 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 № 1

ich 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.