Как создать простой адаптер для ExpandableListView?

Хочу сделать ExpandableListView из коллекции ниже:

    val cites: HashMap<String, List<String>> = HashMap()
    cites.put("cites", arrayListOf("city1", "city2", "city3"))

К сожалению, я не понимаю как это сделать. Я пытался использовать SimpleExpandableListAdapter, но не понял в каком виде ему нужно передать эту коллекцию.


Ответы (1 шт):

Автор решения: llollcat

На основе кода отсюда я написал что-то, что работает:

    ...
    // данные
    var map: MutableMap<String, String?> = HashMap()
    map["Parent1"] = "cites"
    val mWinterMonthsArray = arrayOf("city1", "city2", "city3")


    // коллекция для групп
    val groupDataList = ArrayList<Map<String, String?>>()
    groupDataList.add(map)

    // список атрибутов групп для чтения
    val groupFrom = arrayOf("Parent1")
    // список ID view-элементов, в которые будет помещены атрибуты групп
    val groupTo = intArrayOf(android.R.id.text1)



    // создаем коллекцию элементов для группы
    val сhildDataItemList = ArrayList<Map<String, String?>>()
    // заполняем список атрибутов для каждого элемента
    for (month in mWinterMonthsArray) {
        map = HashMap()
        map["cityName"] = month // название города
        сhildDataItemList.add(map)
    }
    // создаем общую коллекцию для коллекций элементов
    val сhildDataList = ArrayList<ArrayList<Map<String, String?>>>()
    // добавляем в коллекцию коллекций
    сhildDataList.add(сhildDataItemList)

    // список атрибутов элементов для чтения
    val childFrom = arrayOf("cityName")
    // список ID view-элементов, в которые будет помещены атрибуты
    // элементов
    val childTo = intArrayOf(android.R.id.text1)


    val adapter = SimpleExpandableListAdapter(
            this, groupDataList,
            android.R.layout.simple_expandable_list_item_1, groupFrom,
            groupTo, сhildDataList, android.R.layout.simple_list_item_1,
            childFrom, childTo)
    ...
→ Ссылка