首页 > 解决方案 > 有没有办法从长按 ListViewItem 获取类项(使用自定义适配器)

问题描述

我有:一堂课

class Cars (Val Name String, Val Type String, Val Year String)

可变列表

var listeCars : MutableList<Cars>? = null

带有编辑和删除菜单项的菜单带有自定义适配器的列表视图此列表视图已注册为上下文菜单

registerForContextMenu(listView)

override fun onContextItemSelected(item: MenuItem): Boolean {
        val info = item.menuInfo as AdapterContextMenuInfo
        val carx = listeConsultations!![info.position]

// 最后一行不起作用,即使我使用它来代替

val carx = listView.adapter.getItem(info.position) as Car

// 因为我想检索 Car 类项以像这样对其执行一些操作,

        return when {
            item.itemId == R.id.menuDelete -> {
                deleteCar(carx)
                true
            }
            item.itemId == R.id.menuEdit -> {
                updateCar(carx)
                true
            }
            else -> super.onContextItemSelected(item)
        }
    }

private fun updateCar(carx: Car?) {
    val builder = AlertDialog.Builder(applicationContext)
    builder.setTitle("Edit Car")
    val inflater = LayoutInflater.from(applicationContext)
    val view = inflater.inflate(R.layout.edit_car,null)
// .....
}

private fun updateCar(carx: Car?) {
// .....
}

标签: androidkotlinandroid-listview

解决方案


override fun onContextItemSelected(item: MenuItem): Boolean {

   when(item){

      is Cars -> {

          //item is Cars Type in this brace
      }
   }

 ...
}

希望这可以帮助。


推荐阅读