我有一个奇怪的问题,我一起使用 Anko 和Android的内容提供商,我使用LoaderCallbacks<Cursor>
实现了我的片段,并且第一次加载数据时我的fun onLoadFinished(loader: Loader<Cursor>?, data: Cursor?) {}
被调用并将数据加载到 RecyclerView 中,但当我尝试更新记录时,一切正常,直到没有调用onLoadFinished()!
答案 0 :(得分:0)
我花了一天时间才发现使用将光标映射到对象的 Anko的Parser 是个问题:
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())
行游标?.parseList(UploadParser())是我的列表在更改后无法更新的问题!