【问题标题】:kotlin simple_list_item_1 onclicklistener not workingkotlin simple_list_item_1 onclicklistener 不工作
【发布时间】:2019-10-04 15:21:32
【问题描述】:

我正在构建一个购物清单应用程序,这是其中一项活动。

基本上,该活动获取房屋周围所有位置的数据库,并提取名称列表以创建用于显示的字符串数组列表。

之后,它将 prepareListView 绑定到变量 prepareList 并创建一个布局为 simple_list_item_1 的 arrayAdapter。

附加适配器后,它会设置 onItemClicListener。

Listview 工作正常,但我无法让 onClickListener 工作。

我已经搜索了这个网站,并且通常在互联网上也没有找到解决方案。我可以让侦听器使用自定义适配器,但这对于我正在尝试做的事情来说太过分了。大多数解决方案都是 Java,在实现 onClick 函数方面似乎与 Kotlin 非常不同。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.prepare)

    // populate the home locations array
    val  prepareHomeLocations = productDatabase!!.getAllHomeLocations()

    // create a reduced array for displaying
    val reducedHomeLocations = ArrayList<String>()
    for (items in prepareHomeLocations.indices) {
        reducedHomeLocations.add(prepareHomeLocations[items].homeArea)
    }

    // bind the listView
    var prepareList = findViewById<ListView>(R.id.prepareListView)

    // create an adapter
    val adapter =
        ArrayAdapter(this@Prepare, android.R.layout.simple_list_item_1, reducedHomeLocations)

    // attach the adapter
    prepareList.adapter = adapter

    // set the onItemClicListener
    prepareList.setOnItemClickListener { parent, view, position, id ->

        Toast.makeText(this@Prepare, "item Clicked", Toast.LENGTH_SHORT).show()
    }
}

onClickListener 是否不适用于 simple_list_item_1 视图?

【问题讨论】:

    标签: android listview kotlin onitemclicklistener


    【解决方案1】:

    感谢 Taseer - 非常感谢

    这让我很困惑

    我昨天工作了一整天,并尝试了您的建议以及无数其他组合,所以不幸的是,我发布了我尝试的错误变体之一。我今天早上把它放回去但无济于事 - 点击监听器仍然没有工作。然而,知道这是正确的代码后,我再次上网搜索并在https://android--code.blogspot.com/2018/02/android-kotlin-listview-example.html找到了一个 ListView 示例

    我创建了一个新项目并复制了代码 - 它运行良好,因此我至少可以继续使用工作代码。

    我看不出我的代码与我下载的代码有任何显着差异,因此要确保我将 xml 和 kt 代码复制到活动中,以完全替代我编写的代码。这一次它没有工作。认为这一定与活动的链接有关,我从第一原则开始,对主要活动也做了同样的事情。这样,工作示例的主要活动和我正在创建的程序的主要活动是相同的。还是不行!!

    因此,问题与代码无关,因为两个项目之间的代码相同。我开始更深入地寻找。首先使两个 Gradle 文件和 Manifest 文件相同,并删除了我创建的所有其他活动......仍然无法正常工作!

    最后查看了最后一个选项 - 样式,并且,yipee,我终于设法追踪问题的原因。我不小心将 TextView 样式父设置为 Widget.AppCompat.AutoCompleteTextView 而不是 android:Widget.TextView。

    所以,我加载了程序的备份并纠正了这个错误,现在它可以正常工作了。我完全不知道为什么颜色方案的不同样式会阻止单击侦听器的操作,但我认为 AutoCompleteTextView 样式有它自己的优先级侦听器。

    再次感谢您的帮助

    鸡蛋

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多