2016-12-01 5 views
0

Ich habe viel zu lesen über das Thema gemacht, aber ich kann nichts finden, was auf diese Symbole, *, #, sollen sein/darstellen.Schwierigkeiten zu verstehen, UriMatcher Syntax

Wenn sie als Platzhalter für etwas gewöhnt sind, wie SqLite der ?, was dann ersetzen sie? Wenn alles, was du tust, Uri's entspricht, was ist dann der Zweck dieser kryptischen Notation?

Wenn ich eine Liste, ein Objekt oder irgendetwas anderes, warum sollte ich nicht nennen nur die Konstante mit etwas lesbar und geben Sie ihm einen beliebigen Wert und gehen von dort zurückkehren wollten?

z.

sURIMatcher.addURI("contacts", "people", PEOPLE); 
sURIMatcher.addURI("contacts", "people/#", PEOPLE_ID); 
sURIMatcher.addURI("contacts", "people/#/phones", PEOPLE_PHONES); 

in

sURIMatcher.addURI("contacts", "people", PEOPLE); 
sURIMatcher.addURI("contacts", "people_id", PEOPLE_ID); 
sURIMatcher.addURI("contacts", "people_phones", PEOPLE_PHONES); 

Antwort

1

Ich benutze dies zum Beispiel einen Eintrag meiner Datenbank mit einer bestimmten ID zu löschen.

Uri deleteUri = Uri.parse(NoteProvider.CONTENT_URI + "/" + id); 
context.getContentResolver().delete(deleteUri, null, null); 

// URI Matcher 
sURIMatcher.addURI(AUTHORITY, NOTE_BASE_PATH + "/#", NOTE_WITH_ID); 

// delete 
String id = uri.getLastPathSegment(); 
rowsDeleted = db.delete(NoteEntry.TABLE_NAME, NoteEntry._ID + "=" + id, null); 
  • *: Entspricht einer Zeichenkette mit beliebigen gültigen Zeichen beliebiger Länge.
  • #: Spiele eine Reihe von numerischen Zeichen beliebiger Länge.

Ein URI stellt einen Pfad zu einer Ressource, und das ist, was Sie mit einem ContentProvider zugreifen. Also ich denke, dass URI in diesem Fall am besten geeignet ist.

Ein Inhalts-URI ist ein URI, der Daten in einem Anbieter identifiziert. Inhalt URIs enthalten den symbolischen Namen des gesamten Provider (seine Autorität) und einen Namen, der auf eine Tabelle verweist oder Datei (ein Weg). Die optionale ID zeigt auf eine einzelne Zeile in einer Tabelle.

Verwandte Themen