我正在尝试将我的应用程序从Java翻译成Kotlin。我正在使用AnKo SQLite管理数据库
除了使用CursorLoaders的listviews之外,一切正常:在使用AnKo SQLite时,我找不到如何替换CursorLoader。 (和expandableListViews一样的问题)
有人可以帮帮我吗?
好的,这是我的解决方案......我不知道它是否是最好的:
class MyCursorLoader(
mContext: Context,
val mTableName: String,
var mProjection: Array<String>? = null,
var mSelection: String = "1",
var mSelectionArgs: Array<String> = emptyArray(),
var mGroupBy: String = MySqlHelper.ID,
var mHaving: String = "",
var mSortOrder: String = "${MySqlHelper.ID} ASC",
var mLimit: String = "",
var mDistinct: Boolean = true
): CursorLoader(mContext) {
val mObserver: Loader<Cursor>.ForceLoadContentObserver = Loader<Cursor>(mContext).ForceLoadContentObserver()
var mCancellationSignal: CancellationSignal? = null
val cursor = ContentResolverCompat.query(...
行:
val cursor = MySqlHelper.instance.readableDatabase.query(
mDistinct, mTableName, mProjection, mSelection, mSelectionArgs, mGroupBy, mHaving, mSortOrder, mLimit, mCancellationSignal)
所以不需要在清单中重新创建数据提供者,不需要处理Uri ...我可以像使用内置的CursorLoader一样使用MyCursorLoader,调用它如下:
override fun onCreateLoader(id: Int, args: Bundle?): Loader<Cursor> {
when (id) {
DAY_HEADER_LOADER ->
return MyCursorLoader(mContext, TABLE_EVENTS, arrayOf(ID, DAY), mGroupBy = DAY, mSortOrder = "$DAY DESC")
...
}
}
如果有更好的解决方案,请告诉我。
希望能有所帮助。