Я использую recylcerview и хочу показать расширяемый элемент. Данные устанавливаются с помощью viewmodel, и я проверял много раз, не понимаю, в чем проблема с этим, но мой просмотрщик не показывает какой-либо элемент. Я отлаживаю код и адаптер работает. Я установил менеджер раскладки в xml. Может кто-нибудь, пожалуйста, помогите мне с этим.
InviteFragment : SearchSortFragment<PagedList<Group>, LayoutListBaseBinding>(),
ContractInviteUser.View {
@Inject
lateinit var presenter: ContractInvite.Presenter
private val adapter = InviteAdapter(this, this)
private var userType = EnumUserType.GROUP
private var invitedUsersGroup = ArrayList<Group>()
override fun getLayoutResourceId() = R.layout.layout_list_base
override val warningDrawableId: Int get() = R.drawable.ic_no_results_vouchers
override fun bindViews(view: View?) {
if (InviteUsersActivity.getInvitedUsersList(intent) != null)
invitedUsersGroup = InviteUsersActivity.getInvitedUsersGroupList(intent)!!
val currentType = InviteUsersActivity.getUserType(arguments)
if (currentType != null) {
userType = currentType
//adapter.userType = currentType
}
recycler_view.adapter = adapter
loadGroups()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
loadGroups()
}
override fun setupEventListeners() {
//No listeners needed
}
//PRESENT
override fun getPresenter(): IPresenter<*> = presenter
override fun reloadDataset() = loadGroups()
override fun groupsLoaded(groups: LiveData<PagedList<Group>>) {
groups.observe(this, Observer {
adapter.setDataSet(updateInvitedUsersStatus(it), Runnable {
populateViews(it)
})
})
}
class InviteAdapter(
private val listener: OnItemClickListener?,
private val invitationClickListener: OnUserInvitationClickListener):ExpandablePagedRecyclerViewAdapter<Group, GroupsViewHolder, UsersViewHolder, RowGroupsBinding, RowUsersBinding>(DIFF) {
companion object {
val DIFF = object : DiffUtil.ItemCallback<Group>() {
override fun areItemsTheSame(oldItem: Group, newItem: Group) =
areInviteItemsTheSame(oldItem, newItem)
override fun areContentsTheSame(oldItem: Group, newItem: Group) =
areInviteContentsTheSame(oldItem, newItem)
}
fun areInviteItemsTheSame(oldItem: Group, newItem: Group) = oldItem.id == newItem.id
fun areInviteContentsTheSame(oldItem: Group, newItem: Group) =
oldItem.name == newItem.name
}
override fun getHeaderLayoutId() = R.layout.row_groups
override fun getItemLayoutId() = R.layout.row_users
override fun onCreateGroupViewHolder(binding: RowGroupsBinding): GroupViewHolder<RowGroupsBinding> {
return GroupsViewHolder(binding)
}
override fun onCreateChildViewHolder(binding: RowUsersBinding): ChildViewHolder<RowUsersBinding> {
return UsersViewHolder(binding)
}
}
fragment.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingTop="@dimen/activity_half_margin"
android:paddingBottom="@dimen/activity_half_margin"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />