2010-09-16 7 views
6

Ich verwende einen ContentProvider zum Zwischenspeichern von Ergebnissen aus einer Web-Service-Abfrage. Es ist eine HTTP-Anfrage und der Inhalt der Antwort ist XML. Die meisten Daten werden zwischengespeichert, so dass ich einfach die Datenbank abfrage, wenn nicht gefunden, Anfrage von Webservice, DB einfügen und die Datenbank erneut anfordern. Daher ist die Antwort immer ein Cursor von SQLiteDatabaseHelper.Ist es möglich, den SQLite3 Cursor in Android zu verspotten, wenn keine Datenbank oder Tabelle existiert?

Ich habe eine Ergebnismenge, die nicht in der DB gespeichert ist und da es zu 100% transient ist, aber ich würde gerne das Aussehen davon aus dem DB's Cursor zur Verfügung stellen. Gibt es einen einfachen Weg, dies zu tun? Zum Beispiel, wenn ich es mit einem cursor.setValue ("string", objectValue) oder einer anderen vorhandenen Implementierung auf den Cursor projizieren könnte.

Wenn nicht, werde ich entweder die DB für dieses Inhaltsergebnis umgehen, oder stopfen es in eine triviale Tabelle, die ständig wiederverwendet wird.

+0

Es ist trivial, irgendetwas zu verspotten. "Sie nennen sich einen Cursor? Meine Großmutter ist ein besserer Cursor als das!" : D –

Antwort

10

Je nachdem, wie Sie es verwenden, ist es möglicherweise nicht schwer, eine eigene Cursor-Klasse zu schreiben. Der Einfachheit halber leiten Sie Ihre Klasse von der AbstractCursor-Klasse ab, die sich um viele Details kümmert.

Sie können möglicherweise auch MatrixCursor verwenden.

+0

+1 für den Hinweis auf MatrixCursor. – bhups

+0

Bevor ich meine eigene Unterklasse mache, werde ich MatrixCursor ausprobieren - das ist eine der indirekten Unterklassen, die ich nicht versucht habe. – mobibob

+0

Der MatrixCursor war genau das, was ich suchte. Die Implementierung war ungefähr ein halbes Dutzend Zeilen Code. Ich schrieb ein Cursor-Interface-Objekt und es war miserable Menge an Arbeit und viel Debugging von Methoden für eine einmalige Nutzung. Ich werde das Subclassing in der Zukunft wieder besuchen, wenn ich denke, dass ich es in mehreren Projekten (oder mit anderen Entwicklern) wiederverwenden werde. – mobibob

Verwandte Themen