目的
有时候,使用Cursor查询数据库中某个不存在的字段时,要求能返回一个默认值。
代码
class CursorHelper(private var cursor: Cursor?) {
init {
if (cursor == null) {
Log.e("", "cursor is null")
}
}
fun swapCursor(cursor: Cursor) {
this.cursor = cursor
}
fun getBoolean(columnName: String?, defValue: Boolean): Boolean {
return try {
if (cursor == null) {
defValue
} else {
cursor!!.getInt(cursor!!.getColumnIndexOrThrow(columnName)) != 0
}
} catch (e: Exception) {
e.printStackTrace()
defValue
}
}
fun getFloat(columnName: String?, defValue: Float): Float {
return try {
cursor?.getFloat(cursor!!.getColumnIndexOrThrow(columnName)) ?: defValue
} catch (e: Exception) {
e.printStackTrace()
defValue
}
}
fun getInt(columnName: String?, defValue: Int): Int {
return try {
cursor?.getInt(cursor!!.getColumnIndexOrThrow(columnName)) ?: defValue
} catch (e: Exception) {
e.printStackTrace()
defValue
}
}
fun getDouble(columnName: String?, defValue: Double): Double {
return try {
cursor?.getDouble(cursor!!.getColumnIndexOrThrow(columnName)) ?: defValue
} catch (e: Exception) {
e.printStackTrace()
defValue
}
}
fun getLong(columnName: String?, defValue: Long): Long {
return try {
cursor?.getLong(cursor!!.getColumnIndexOrThrow(columnName)) ?: defValue
} catch (e: Exception) {
e.printStackTrace()
defValue
}
}
fun getString(columnName: String?, defValue: String): String {
return try {
cursor?.getString(cursor!!.getColumnIndexOrThrow(columnName)) ?: defValue
} catch (e: Exception) {
e.printStackTrace()
defValue
}
}
fun moveToNext(): Boolean {
return cursor != null && cursor!!.moveToNext()
}
fun moveToFirst(): Boolean {
return cursor != null && cursor!!.moveToFirst()
}
fun getCount(): Int {
return if (cursor == null) {
0
} else {
cursor!!.count
}
}
fun close() {
if (cursor != null && !cursor!!.isClosed) {
cursor!!.close()
}
}
companion object {
fun from(cursor: Cursor?): CursorHelper {
return CursorHelper(cursor)
}
}
}
示例
int limitSecond = cursorHelper.getInt(TIME_LIMIT, Integer.MAX_VALUE)
作者:帅得不敢出门