android - 如何在Android中执行单击ListView元素的按钮
问题描述
当用户按下 ListView 的某些元素(但不是按钮)时,它可以正常工作并且 android 显示 toast:“未单击按钮,$position 正常工作”
但是当在特定的 listView 元素中单击按钮时,我还需要烤面包(并获取按钮的位置)。我尝试使用view.imageViewButton.setOnClickListener
inside,listV.setOnItemClickListener
但在这种情况下,按钮只有在单击按钮左侧的空白区域后才起作用。
listV.setOnItemClickListener { parent, view, position, id ->
//I tried you use comented line to solwe my problem
//view.imageViewButton.setOnClickListener { Toast.makeText(this, "button $position is clicked",Toast.LENGTH_SHORT).show() }
Toast.makeText(this, "not button clicked, works correctly", Toast.LENGTH_SHORT).show()
}
启动时如何激活按钮onCreate(savedInstanceState: Bundle?)
?
我的科特林代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var db = DataBaseHelper(this)
var cursor = db.returnLines()
listV.adapter = SimpleCursorAdapter(this,
R.layout.view_holder,
cursor,
arrayOf("imia"),
intArrayOf(R.id.listNameView),
0)
listV.setOnItemClickListener { parent, view, position, id ->
//I tried you use comented line to solwe my problem
//view.imageViewButton.setOnClickListener { Toast.makeText(this, "button $position is clicked",Toast.LENGTH_SHORT).show() }
Toast.makeText(this, "not button clicked, $position works correctly", Toast.LENGTH_SHORT).show()
}
}
解决方案
您可以扩展 SimpleCursorAdapter 以将点击侦听器设置为特定视图
class CustomAdapter(context: Context?, layout: Int, c: Cursor?, from: Array<out String>?, to: IntArray?) : SimpleCursorAdapter(context, layout, c, from, to) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
return super.getView(position, convertView, parent).apply {
if (convertView == null) { // This means newView()
findViewById<View>(R.id.image_view).setOnClickListener {
Toast.makeText(context, "image view clicked pos=$position")
}
}
}
}
}
但我建议你使用 RecyclerView 而不是 ListView。
ListView 是老式的,不推荐使用
希望能帮助到你 :)
推荐阅读
- excel - 将工作表导出为 csv
- python - Postgresql sqlalchemy 默认时间 now() 一遍又一遍地给出相同的时间
- javascript - Jade 中的连接变量
- python - 每种数据拆分类型的形状气泡图
- c++ - C++ 如果一个函数调用另一个接受参数并打印结果的函数。为什么不打印?
- vue.js - 当有人切换视图时,有没有办法在 fullcalendar vue 组件中得到通知?
- java - 在java中设置状态
- javascript - 仅在使用 jQuery 的循环内选中特定复选框
- python - 通过 kv 文件启用/禁用按钮 onclick
- javascript - Svelte 商店功能更新