kotlin - 从行为空的数据库中过滤结果
问题描述
我想显示数据库中指定列的行为空(未插入数据)的所有行。为此,我在我的代码中onCreateLoader
编写了以下代码:
override fun onCreateLoader(p0: Int, p1: Bundle?): Loader<Cursor> {
val projection = arrayOf(
WalletEntry._ID,
WalletEntry.KEY_TITLE,
WalletEntry.KEY_MONEY,
WalletEntry.KEY_LAST_DATE,
WalletEntry.KEY_LAST_EXPENSE,
WalletEntry.KEY_LAST_TRANSACTION_TITLE,
WalletEntry.KEY_LOCALES,
WalletEntry.KEY_CURRENCY
)
val selection = "${WalletEntry.KEY_CURRENCY} = ?"
val selectionArgs = arrayOf("")
return applicationContext?.let { context ->
CursorLoader(context,
WalletEntry.CONTENT_URI,
projection,
selection,
selectionArgs,
null)
}!!
}
WalletEntry.KEY_CURRENCY
我想显示所有没有符号值的结果的地方是空的。我试图将 selectionArgs 指定为 null,但它都不起作用。那么,我应该如何编写selectionArgs
以显示给定行为空的所有结果?
为了让我的情况更清楚,我将提供一个应用程序目标。我正在学习 kotlin,并决定编写类似“银行”应用程序的东西,您可以在其中添加不同的钱包并指定货币。如果您添加一种新货币,它会立即添加到数据库的列WalletEntry.KEY_CURRENCY
中。然后我有一个包含所有“钱包”的列表,其中添加新货币后会出现一个空的额外钱包。为避免这种情况,我想过滤结果并仅显示那些没有在WalletEntry.CURRENCY
列中传递值的结果。
解决方案
如果您正在NULL
该数据库列中查找值,我认为您可能正在寻找:
val selection = "${WalletEntry.KEY_CURRENCY} IS NULL"
val selectionArgs = null
如果selectionArgs
参数不可为空,请尝试将其设置为emptyArray<String>()
推荐阅读
- ruby-on-rails - 致命:用户“postgres”版本 11 的密码验证失败
- c - 相邻重复去除器功能
- elixir - 从地图列表中获取 %{key,value}
- javascript - 如何在计算属性名称中解释关键字“this”?
- r - 将一列中的 NA 替换为 dplyr 中另一列的值
- python - Spearman 等级相关性 - TypeError:“int”对象不可调用
- python - 在新的训练数据上使用预训练的 XML 文件在 python 中重新训练 OPENCV 级联分类器
- mulesoft - Cloud Hub 部署中的 Mule 部署命名空间问题
- python - Plotly:如何为标准偏差制作具有多条线和阴影区域的图形?
- vue.js - VUE:在推送时刷新目标路由上的组件