Я пытаюсь выяснить, как я могу вложить представление списка в другое представление списка, используя 2 адаптера.
В настоящее время у меня есть фрагмент, показывающий список групп, но я также хотел бы показать членов группы. группа. Поскольку количество членов не фиксировано, они должны отображаться динамически.
Ниже приведены мой класс groupOverview и мой GroupAdapter. Мой xml-файл - это просто общее представление, содержащее listView и другой xml для представления каждой строки списка.
Я знаю, что мне нужно создать еще один Adapter и line.xml для моих членов, но я понятия не имею, как мне это сделать. я должен добавить их в мой существующий код ниже.
Список, который я пытаюсь отобразить:
var groupList: ArrayList<Group> = arrayListOf(
Group("Groep1", arrayListOf("Jan", "Piet", "Joris", "Korneel")),
Group("Groep2", arrayListOf("Octaaf", "Alberto", "Samson", "Bobientje")),
Group("Groep3", arrayListOf("Kwebbel", "Plop", "Smul", "Klus")),
Group("Groep4", arrayListOf("Blossom", "Butters", "Buttercup"))
)
Файл Fragment.kt:
class GroupOverview : Fragment() {
var adapter: GroupAdapter? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = DataBindingUtil.inflate<FragmentGroupOverviewBinding>(
inflater,
R.layout.fragment_group_overview,
container,
false
)
adapter = GroupAdapter(
activity!!.applicationContext,
GroupProvider.groupList
)
//set adapter
binding.lineGroup.adapter = adapter
return binding.root
}
}
Адаптер:
class GroupAdapter:BaseAdapter {
var groupList = ArrayList<Group>()
var context: Context? = null
constructor(context: Context, groupList: ArrayList<Group>) : super() {
this.context = context
this.groupList = groupList
}
override fun getCount(): Int {
return groupList.size
}
override fun getItem(position: Int): Any {
return groupList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val group = this.groupList[position]
var inflator = context!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var groupView = inflator.inflate(R.layout.group_entry, null)
groupView.txtGroep.text = group.name!!
groupView.setOnClickListener{ view ->
view.findNavController().navigate(R.id.action_groupOverview_to_projectOverviewFragment)
}
return groupView
}
}