0

我遇到了一个奇怪的问题,我同时使用了Anko和 Android 的内容提供程序,我使用LoaderCallbacks<Cursor>第一次加载数据并fun onLoadFinished(loader: Loader<Cursor>?, data: Cursor?) {}调用我的片段并将数据加载到RecyclerView中实现了我的片段,但是当我尝试更新记录时一切正常直到没有调用 onLoadFinished() 为止!

4

1 回答 1

0

我花了一天的时间才发现问题是使用将光标映射到对象的Anko 解析器:

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

}

长话短说:当用户单击Recyclerview项目时,我会使用适配器中的光标并将其移动到当前位置,然后我尝试使用以下方法将光标映射到我的模型:

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())

哪一行cursor?.parseList(UploadParser())是我的列表在更改后不会更新的问题!

于 2017-04-26T08:11:34.123 回答