Как создать простой адаптер для 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)
...