android - Android Checkbox List 总是检查第一项
问题描述
当某些条件为真时,我必须显示选中的复选框。但我的适配器总是检查第一个复选框。我不知道为什么。
我的 ListView 适配器:
class SampleAdapter() : BaseAdapter() {
val list: MutableList<String> = mutableListOf(
"ITEM 1", "ITEM 2", "ITEM 3", "ITEM 4", "ITEM 5" )
override fun getView(position: Int, view: View?, parent: ViewGroup): View {
var convertView = view
val result: View
if (convertView == null) {
convertView = LayoutInflater.from(parent.context)
.inflate(R.layout.sample_checkbox, parent, false)
result = convertView
} else {
result = convertView
}
val item: String = getItem(position)
result.checkBox.text = item
if(item == "ITEM 5") result.checkBox.isChecked = true
return result
}
override fun getCount(): Int { return list.size }
override fun getItem(position: Int): String { return list[position] }
override fun getItemId(p0: Int): Long { return 0 }
}
结果:
问题:
我希望只看到第 5 项被选中 ( item == "ITEM 5"
)。但是也检查第一项,如上所示。
解决方案
适配器也要求您涵盖其他条件。所以添加这样的 else 语句:
if(item == "ITEM 5") result.checkBox.isChecked = true
else result.checkBox.isChecked = false
如果您愿意,可以将此代码缩减为单行
推荐阅读
- laravel - 根据 laravel 中的状态名称更改颜色
- django - 尽管解决了 `django.core.excptions.ImproperlyConfigured: The TEMPLATE_DIRS setting must be a list or a tuple` 错误,但列表和元组不起作用
- haskell - 解析输入'='的错误也许你需要在'do'块中使用'let'?例如'让 x = 5' 而不是'x = 5'
- python - 如何将 dtype 从“0”转换为“int64”?
- python - 2 个 3D 张量之间的张量点维度
- powerbi - Measure (CALCULATE) - 两个事实表
- javascript - 尝试在 Vue 组件中使用 Select2,但选项为空?
- networking - 无法使用 podman 公开端口
- azure - 在 Visual Studio 2019 中执行 Azure OCR 时出现“System.Net.Http.HttpRequestException:不知道这样的主机”
- javascript - 创建一个函数以将数据数组动态转换为表的列标题