问题描述
某些情况为真时,我必须显示选中的复选框。但是我的适配器始终选中第一个复选框。我不知道为什么。
我的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
如果愿意,可以将此代码简化为单行