我正在构建一个购物清单应用程序,这是一项活动。
基本上,该活动会收集房子周围所有位置的数据库,并提取名称列表以创建要显示的StringsArrayList。
此后,它将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视图一起使用吗?
答案 0 :(得分:0)
感谢Taseer-非常感谢
这让我很困惑
我昨天整天都在工作,并且尝试了您的建议以及无数其他组合,因此很遗憾,我发布了我尝试的一种不正确的变体形式。我今天早上把它放回去,但无济于事-点击监听器仍然无法正常工作。但是,凭借着正确的代码知识,我再次去了互联网,并在https://android--code.blogspot.com/2018/02/android-kotlin-listview-example.html
处找到了ListView示例。我创建了一个新项目并将其复制到代码中-效果很好,因此我至少正在开发工作代码。
我的代码与下载的代码之间没有明显差异,因此请确保将xml和kt代码复制到活动中,以完全替代我编写的代码。这次没有用。我认为这一定与活动的链接有关,所以我从最初的原则开始,对主要活动也是如此。这样,工作示例的主要活动与我正在创建的程序的主要活动是相同的。仍然没有用!!
因此,问题与代码无关,因为两个项目之间的代码相同。我开始更深入地搜索。首先使两个Gradle文件和Manifest文件相同,然后删除我创建的所有其他活动。……仍然无法正常工作!
最后查看了最后一个选项-样式,是的,我终于设法找到了问题的原因。我不小心将TextView样式父级设置为Widget.AppCompat.AutoCompleteTextView而不是android:Widget.TextView。
因此,我加载了程序的备份并更正了此错误,它现在可以正常工作。我完全不知道为什么配色方案的其他样式会阻止单击式侦听器的操作,但我认为AutoCompleteTextView样式具有自己的侦听器优先。
再次感谢您的帮助
鸡蛋