Android: Erhöhe das DB-Feld über ContentValues

Ich aktualisiere ein Element in einer ListView über die getContentResolver().update() und ich möchte ein 'views'-Feld über einen ContentValue inkrementieren, kann aber nicht herausfinden, ob dies möglich ist.

Ich könnte dies mit rohem SQL SET views = views + 1 , aber die Einstellung eines ContentValue, wie z. B. cv.put("views", "views + 1") führt dazu, dass das Views-Feld explizit auf "views + 1" gesetzt wird Als eine Zahl.

  • Benötigen Sie ein einfaches Beispiel für die Audioaufnahme
  • Erforderliches Gradle-Projekt aus einem anderen Verzeichnis
  • Wie man eine Referer-Anfrage in einer URL für ein WebView sendet
  • Vertikaler Fortschrittsbalken in Android
  • Übergeordneten Adapter.getView
  • Android: Fokus auf TimePicker-Elemente
  • Irgendwelche Zeiger auf diesem on, oder bin ich zu einem manueller Ansatz verlassen?

    Vielen Dank,

    Paulus

    AKTUALISIEREN:

    Ich bin zurückgegangen, um rohes SQL zu verwenden, um das Update für jetzt durchzuführen, und dann manuell benachrichtigen Sie den zugrunde liegenden CursorAdapter der Änderung über getContentResolver().notifyChange() . Wäre immer noch toll, wenn ich einen Weg finden könnte, dies direkt über getContentResolver().update() , also wenn jemand einen Weg hat, das zu tun, bitte posten Sie es hier.

  • Drag & Drop-Ansicht außerhalb von Recyclerview
  • CRITICAL_STRUCTURE_CORRUPTION BSOD Windows 8.1 mit Intel HAXM Android Emulator installiert
  • NativeScript: benutzerdefinierte Kamera-Ansicht
  • Wie bekomme ich den Dur & Lat Wert von vier Ecken in der Mapview in Android?
  • Root-Layout in der Aktivität suchen
  • Scroll gridview beim Ziehen von Element (als Schatten)
  • 3 Solutions collect form web for “Android: Erhöhe das DB-Feld über ContentValues”

    Meine endgültige Lösung dafür war, eine benutzerdefinierte Uri (im Sinne von ...item/5/updateviews ) über den ContentProvider so dass ein Aufruf von getContentResolver().update(customUri, ...) , der diesen Uri getContentResolver().update(customUri, ...) sagt mir ContentProviders überschriebene update() -Methode, um die View-Zählung für dieses Item zu ContentValues , wodurch die Notwendigkeit, Werte zu update() über den ContentValues Parameter zu übergeben, zu ContentValues .

    Ich habe die Call-API auf meinem Content-Provider implementiert als eine Möglichkeit, rohe / einmalige SQL-Abfragen direkt an die zugrunde liegende SQLiteDatabase zu senden. Es war einfach genug

     String key = "1";//some value where you want to update int currentCount = 5;//the existing value of the count field ContentValues values = new ContentValues(); values.put("my_counter_field", currentCount + 1); int updatedRows = database.update("my_table_name", values, "my_where_field = ?", new String[] {key}); 

    So etwas für die Verwendung von ContentValues .

    Eine möglicherweise einfachere Route kann sein: database.execSQL("UPDATE my_table_name SET my_counter_field = my_counter_field + 1 WHERE my_where_field = ?", new Object[] {key});

    Oder vielleicht sogar einen Trigger verwenden. Sehen Sie diese Frage, um zu sehen, ob es Ihren Bedürfnissen entspricht: Verwenden Sie Trigger für Auto-Inkrement

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.