首页 > 解决方案 > 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")。但是也检查第一项,如上所示。

标签: androidkotlinandroid-listadapter

解决方案


适配器也要求您涵盖其他条件。所以添加这样的 else 语句:

if(item == "ITEM 5") result.checkBox.isChecked = true
else result.checkBox.isChecked = false

如果您愿意,可以将此代码缩减为单行


推荐阅读