0

Ich habe dieses seltsame Problem, wo ich verwenden Anko und Android Content-Provider zusammen, implementiert ich mein Fragment unter Verwendung bekamen LoaderCallbacks<Cursor> und beim ersten Mal Daten geladen und meine fun onLoadFinished(loader: Loader<Cursor>?, data: Cursor?) {} bekam aufgerufen und Daten in die RecyclerView geladen, aber als ich versuchte, den Datensatz zu aktualisieren, war alles in Ordnung bis zu dem Punkt, dass die onLoadFinished() wurde nicht aufgerufen!Anko + Content Provider, die Daten nicht auf Änderung aktualisieren

Antwort

0

Es dauerte meinen Tag, um herauszufinden, dass die Anko des Parser verwenden, die einen Cursor in ein Objekt abbildet war die Frage:

fun <T: Any> Cursor.parseList(parser: RowParser<T>): List<T> = AnkoInternals.useCursor(this) { 
val list = ArrayList<T>(count) 
moveToFirst() 
while (!isAfterLast) { 
    list.add(parser.parseRow(readColumnsArray(this))) 
    moveToNext() 
} 
return list 

}

lange Geschichte kurz: wenn der Benutzer klickt auf Die Recyclerview Element, würde ich den Cursor aus dem Adapter und bewegte es an die aktuelle Position, dann habe ich versucht, den Cursor auf mein Modell mit:

val cursor = mAdapter?.cursor 
    cursor?.moveToPosition(it) 
    Observable.defer { 
     val uploadingItem = cursor?.parseList(UploadParser()) 
     if (uploadingItem == null) { 
     Exceptions.propagate(IllegalArgumentException()) 
     } 
     Observable.just(UploadInfoArgs.parseUploading(uploadingItem?.get(it)!!)) 
    }.subscribeOn(Schedulers.immediate()).observeOn(AndroidSchedulers.mainThread()) 

welche die Zeile Cursor? .parseList (UploadParser()) war das Problem, dass meine Liste nicht nach Änderungen aktualisiert werden würde!

Verwandte Themen