如何销毁在 onClickListener 方法中创建的视图?

问题描述

(我对 Kotlin 和编程很陌生,所以如果我想不出明显的解决方案,我深表歉意。)

我正在尝试创建一个 ExpandableListView,其中子项也可以展开和折叠。我已经设法设置了一个 onChildClickListener 来扩充必要的布局,但是当再次单击孩子时,我无法找到销毁或删除所述布局的方法

代码如下:

override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
    super.onViewCreated(view,savedInstanceState)

    val dataset: List<Medication> = MedicationsListData().loadMedicationsList()
    val medicationsListView: ExpandableListView = view.findViewById(R.id.medications_list_view)

    medicationsListView.setAdapter(Medicationslistadapter(requireContext(),dataset))
    medicationsListView.setonChildClickListener { _,v,groupPosition,childPosition,_ ->
        //get data for correct item
        val tempKey = (dataset.distinctBy { it.groupName })[groupPosition].groupName
        val clickedItem = dataset.filter { it.groupName == tempKey }[childPosition]

        //inflate or destroy medication_item_content
        var contentView: View? = null
        if (contentView == null) {
            val layoutInflater =
                this.requireContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
            layoutInflater.inflate(
                R.layout.medication_item_content,v.findViewById(R.id.content_view_holder),true
            )
        } else contentView!!.visibility = View.GONE

        //populate view with data
        false
    }

如果我将 contentView 变量移到 onChildClickListener 方法之外,则会出现错误

Added variable(s) does not support value initialization: Adding field object com.example.quickref.uicontrollers.MedicationsFragment.contentView

添加一个简单的布尔变量也不起作用,因为有多个子级,每个子级都使用相同的方法

我想另一种方法是将子项也设置为 ExpandableListViews,但这似乎需要大量看似不必要的代码,因为可展开/可折叠内容的结构是相同的,现在我可以从一个数据类填充字符串。

谢谢!

解决方法

你有没有试过这个: https://developer.android.com/reference/android/widget/ExpandableListView ? 它是更复杂的列表版本,可以制作可扩展的项目。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...