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