Ich versuche, eine ExpandableListView in meiner App zu implementieren, aber sie wird nicht angezeigt.ExpandableListView wird nicht in meiner Aktivität angezeigt
Ich doppelt geprüft:
Die korrekte Namensgebung und unter Bezugnahme zu allen meinen drei XML-Layouts (für ExpandableListView, Listenkopf und Listenelement),
Gedebuggte zu sehen, ob meine Listen werden in
prepareListdata()
Methode ausgefüllt (sie sind).
Ich denke, das Problem in meinem ExpandableListAdapterClass
ist, da die Klasse listDataHeader : ArrayList<String>, listDataChild : HashMap<String, ArrayList<String>>
werden immer gefärbt mit einem verschnörkelten grau Zeilenparameter als nicht verwendet.
Wie kann ich meiner App mitteilen, dass diese meinen Aktivitätsmitgliedsvariablen entsprechen? Oder gibt es etwas Offensichtliches, das mir fehlt?
Hier ist mein Code:
Adapter
class ExpandableListAdapter (context: Context, listDataHeader : ArrayList<String>, listDataChild : HashMap<String, ArrayList<String>>) : BaseExpandableListAdapter() {
var listDataHeader = arrayListOf<String>() //list sub-headers
var listDataChild = HashMap<String, List<String>>() //list sub-points
private val inflater: LayoutInflater = LayoutInflater.from(context)
override fun getGroup(groupPosition: Int): Any {
return this.listDataHeader[groupPosition]
}
override fun isChildSelectable(p0: Int, p1: Int): Boolean {
return true
}
override fun hasStableIds(): Boolean {
return false
}
override fun getGroupView(groupPosition: Int, isExpanded: Boolean, convertView: View?, parent: ViewGroup?): View? {
val headerTitle: Int = getGroup(groupPosition) as Int
if (convertView == null) {
inflater.inflate(R.layout.main_list_group_header, parent, false)
}
val listHeader = convertView?.findViewById<TextView>(R.id.list_header)
listHeader?.setTypeface(null, Typeface.BOLD)
listHeader?.setText(headerTitle)
return convertView
}
override fun getChildrenCount(groupPosition: Int): Int {
return this.listDataChild[this.listDataHeader[groupPosition]]!!.size
}
override fun getChild(groupPosition: Int, childPosition: Int): Any {
return this.listDataChild[this.listDataHeader[groupPosition]]!![childPosition]
}
override fun getGroupId(groupPosition: Int): Long {
return groupPosition.toLong()
}
override fun getChildView(groupPosition: Int, childPosition: Int, isLastChild: Boolean, convertView: View?, parent: ViewGroup?): View? {
val childText: Int = getChild(groupPosition, childPosition) as Int
if (convertView == null) {
inflater.inflate(R.layout.main_list_item, parent, false)
}
val textListChild = convertView?.findViewById<TextView>(R.id.list_item)
textListChild?.setText(childText)
return convertView
}
override fun getChildId(groupPosition: Int, childPosition: Int): Long {
return childPosition.toLong()
}
override fun getGroupCount(): Int {
return this.listDataHeader.size
}
}
Der Rest MainActivity und prepareListData() Funktion
class MainListActivity : AppCompatActivity() {
lateinit var adapter : ExpandableListAdapter
val listDataHeader = arrayListOf<String>()
val listDataChild = HashMap<String, ArrayList<String>>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_mainlistactivity)
prepareListData()
adapter = ExpandableListAdapter(this, listDataHeader, listDataChild)
expandable_list.setAdapter(adapter)
}
private fun prepareListData() {
listDataHeader.add("Gathering data")
listDataHeader.add("Simulate")
val gatheringDataChildList = arrayListOf<String>()
gatheringDataChildList.add("Record data: video + accelerometer")
val simulateChildList = arrayListOf<String>()
simulateChildList.add("Driving simulator")
listDataChild.put(listDataHeader[0], gatheringDataChildList)
listDataChild.put(listDataHeader[1], simulateChildList)
}
Hier ist der Screenshot von dem, was ich zu erreichen versuchen:
Also, was Sie wollen genau bevölkert werden? Farbiger Gegenstand oder etwas anderes? bedeutet, dass Ihre Sicht in Aktivität leer ist? –
@AjayPandya ja. Weder meine Kopfzeilen noch meine untergeordneten Elemente werden angezeigt. Die Ansicht ist komplett leer. – lidkxx
@lidkxx ist 'erweiterbare_liste' ein' RecyclerView'? Wenn ja, müssen Sie 'layoutManager' angeben (am wahrscheinlichsten' LinearLayoutManager') – rafal