Java [Android] [Content Provider] Uri Pfadstruktur / pro Tabelle eine extra Klasse?

T

Tersus

Gast
Guten Tag,

die Anleitung von Google zu diesem Thema habe ich mir schon durchgelesen, aber so ganz wird nicht ersichtlich, wie ich die Uri-Pfade strukturieren soll.

Jeder Content Provider besitzt eine CONTENT_URI, mit der man den Content Provider erreichen kann.

Angenommen ich habe folgenden Content Provider:

Code:
public class FoodProvider extends ContentProvider{

    private static final String AUTHORITY = "de.tersus.provider";
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);

    ...

}

Der Provider hat folgende Tabellen: Junkfood, Vegan, Restaurant.

Sollte ich jetzt für jede Tabelle eine innere Klasse anlegen, etwas so:

Code:
public static class Junkfood{

    private static final String PATH = "junkfood";
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + PATH);

    ...

}

oder sollte ich einfach in der Hauptklasse FoodProvider weitere Uris anbieten, wie etwa CONTENT_URI_JUNKFOOD, ... ?

Anhand der Klassen UserDictionary und ContactsContract hat es den Anschein, als solle man dies tatsächlich mit inneren Klassen realisieren.
 
Wenn man einen Contentprovider für mehrere Tabellen nutzt, ist es sehr zu empfehlen für jede Tabelle eine Contract-Klasse zu erstellen. Da wirft man dann alle tabellenbezogenen Konstanten rein. Nicht nur die CONTENT_URI sondern gern auch die Spaltennamen der Tabelle oder verschiedene Projektionen auf der Tabelle.

Ich würde aber auch nicht zu viele Tabellen in den Provider werfen. Kann man Junkfood und Vegan nicht in einer Tabelle verarbeiten? Futter ist doch Futter, nur mit verschiedenen Attributen.
 
Danke dir für die Antwort!

Das mit den Essenstabellen war nur ein blödes Beispiel. ;-) Natürlich braucht man dafür nicht jedes mal eine Tabelle. Das wäre schon ein seltsamer Diskursbereich.
 
Zurück
Oben