在BaseExpandableListAdapter Kotlin中将数据从子级传递到组

问题描述

是否可以在Baseexpandablelistadapter中将数据直接从getChildView()传递到getGroupView?

这是我的适配器类。我想将我从getChildView()获得的数据(val topicTitle)传递给getGroupView。如何直接在此适配器中做到这一点?

class MyAdapter internal constructor(
    private val context: Context,private val chapterList: List<String>,private val topicslist: HashMap<String,List<String>>
) : Baseexpandablelistadapter() {

    override fun getGroup(groupPosition: Int): Any {
        return chapterList[groupPosition]
    }

    override fun isChildSelectable(groupPosition: Int,childPosition: Int): Boolean {
        return true
    }

    override fun hasstableIds(): Boolean {
        return false
    }

    override fun getGroupView(groupPosition: Int,isExpanded: Boolean,convertView: View?,parent: ViewGroup?): View {
        var convertView = convertView
        val chapterTitle = getGroup(groupPosition) as String

        if (convertView == null) {
            val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
            convertView = inflater.inflate(R.layout.listview_layout_grupna_najava_header,null)
        }

        val txtId = convertView!!.findViewById<TextView>(R.id.txtId)
        txtId.text = chapterTitle

        return convertView
    }

    override fun getChildrenCount(groupPosition: Int): Int {
        return this.topicslist[this.chapterList[groupPosition]]!!.size
    }

    override fun getChild(groupPosition: Int,childPosition: Int): Any {
        return this.topicslist[this.chapterList[groupPosition]]!![childPosition]
    }

    override fun getGroupId(groupPosition: Int): Long {
        return groupPosition.toLong()
    }

    @RequiresApi(Build.VERSION_CODES.KITKAT)
    override fun getChildView(groupPosition: Int,childPosition: Int,isLastChild: Boolean,parent: ViewGroup?): View {
        var convertView = convertView
        val topicTitle = getChild(groupPosition,childPosition) as String

        if (convertView == null) {
            val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
            convertView = inflater.inflate(R.layout.listview_layout_pregled_najave_pojedinacna,null)
        }

        val txtAddress = convertView!!.findViewById<TextView>(R.id.txtAddress)
        val txtCity = convertView!!.findViewById<TextView>(R.id.txtCity)
        val txtPerson = convertView!!.findViewById<TextView>(R.id.txtPerson)
        val txtStatus = convertView!!.findViewById<TextView>(R.id.txtStatus)

        txtAddress.text = topicTitle.split("/")[1].trim()
        txtCity.text = topicTitle.split("/")[2].trim()
        txtPerson.text = topicTitle.split("/")[3].trim()
        txtStatus.text = topicTitle.split("/")[5].trim()

        convertView.btnDropdownMenu.setonClickListener() {
            val popupMenu = PopupMenu(context,it,Gravity.START)
            popupMenu.setonMenuItemClickListener { item ->
                when (item.itemId) {
                    R.id.detalji -> {
                        convertView.btnDropdownMenu.context.startActivity(
                            Intent(convertView.btnDropdownMenu.context,Details::class.java).putExtra("Id",topicTitle.split("/")[0].trim())
                        )
                        true
                    }
                    R.id.preuzmi -> {
                        Toast.makeText(convertView.btnDropdownMenu.context,"PREUZMI Todo",Toast.LENGTH_SHORT).show()
                        true
                    }
                    R.id.obradi -> {
                        convertView.btnDropdownMenu.context.startActivity(
                            Intent(convertView.btnDropdownMenu.context,ItemDetails::class.java).putExtra("Id",topicTitle.split("/")[0].trim())
                                .putExtra("From","Najava")
                        )
                        true
                    }
                    R.id.oslobodi -> {
                        Toast.makeText(convertView.btnDropdownMenu.context,"osloBODI Todo",Toast.LENGTH_SHORT).show()
                        true
                    }
                    R.id.realizuj -> {
                        Toast.makeText(convertView.btnDropdownMenu.context,"REALIZUJ Todo",Toast.LENGTH_SHORT).show()
                        true
                    }
                    else -> false
                }
            }
            popupMenu.inflate(R.menu.menu_pregled_najave)

            when (topicTitle.split("/")[4].trim().toInt()) {
                StatusNajaveEnum.Neobradjena.value -> {
                    popupMenu.menu.findItem(R.id.preuzmi).isVisible = true
                    popupMenu.menu.findItem(R.id.obradi).isVisible = true
                    popupMenu.menu.findItem(R.id.oslobodi).isVisible = false
                    popupMenu.menu.findItem(R.id.realizuj).isVisible = true
                }
                StatusNajaveEnum.Preuzeta.value -> {
                    popupMenu.menu.findItem(R.id.preuzmi).isVisible = false
                    popupMenu.menu.findItem(R.id.obradi).isVisible = true
                    popupMenu.menu.findItem(R.id.oslobodi).isVisible = true
                    popupMenu.menu.findItem(R.id.realizuj).isVisible = true
                }
                StatusNajaveEnum.Realizivana.value -> {
                    popupMenu.menu.findItem(R.id.preuzmi).isVisible = false
                    popupMenu.menu.findItem(R.id.obradi).isVisible = false
                    popupMenu.menu.findItem(R.id.oslobodi).isVisible = false
                    popupMenu.menu.findItem(R.id.realizuj).isVisible = false
                }
                StatusNajaveEnum.Stornirana.value -> {
                    popupMenu.menu.findItem(R.id.preuzmi).isVisible = false
                    popupMenu.menu.findItem(R.id.obradi).isVisible = false
                    popupMenu.menu.findItem(R.id.oslobodi).isVisible = false
                    popupMenu.menu.findItem(R.id.realizuj).isVisible = false
                }
            }

            popupMenu.show()
        }
        return convertView
    }

    override fun getChildId(groupPosition: Int,childPosition: Int): Long {
        return childPosition.toLong()
    }

    override fun getGroupCount(): Int {
        return chapterList.size
    }
}

,并且我的getGroupView中需要这个经过修改的topicList。我该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)