Я хочу убедиться, что первый элемент в списке всегда переключается на открытие при загрузке страницы. По независящим от меня причинам я не смог этого сделать.
В recyclerview также есть дочерний recyclerview. Я хочу убедиться, что дочерние элементы первого элемента родительского recyclerview (которому принадлежит этот адаптер, для которого я показываю код) всегда видны при загрузке страницы.
import android.content.Context
import android.os.Build
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.xputer.table4two.Activity.BaseActivity
import com.xputer.table4two.Fragment.RestaurantPage
import com.xputer.table4two.Model.MenuCategory
import com.xputer.table4two.R
import kotlinx.android.synthetic.main.menu_category_list.view.*
class RestaurantMenuAdapter (val items: ArrayList<MenuCategory>, val context: Context) : RecyclerView.Adapter<RestMenuViewHolder>() {
private val viewPool = RecyclerView.RecycledViewPool()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RestMenuViewHolder {
return RestMenuViewHolder(LayoutInflater.from(context).inflate(R.layout.menu_category_list, parent, false))
}
override fun getItemCount(): Int {
return items.size
}
@RequiresApi(Build.VERSION_CODES.O)
override fun onBindViewHolder(holder: RestMenuViewHolder, position: Int) {
val childLayoutManager = LinearLayoutManager(
holder.recyclerView.context, RecyclerView.VERTICAL, false)
childLayoutManager.initialPrefetchItemCount = items.size
holder.recyclerView.apply {
layoutManager = childLayoutManager
adapter = menuSubCategoryAdapter(items[position].MenuSubCategories, context)
setRecycledViewPool(viewPool)
}
holder.menuCatName.text = items[position].Name
holder.recyclerView.visibility = View.GONE
var expandNow = false
holder.toggle.setOnClickListener {
if (holder.recyclerView.visibility == View.GONE || expandNow) {
if(items[position].MenuSubCategories.size == 0) {
((context as BaseActivity).currentFragment as RestaurantPage).loadMenuSubCategory(items[position].Code) {
items[position].MenuSubCategories.addAll(it)
holder.recyclerView.visibility = View.VISIBLE
holder.toggleIcon.setImageResource(R.drawable.arrow_up)
}
}
else{
holder.recyclerView.visibility = View.VISIBLE
holder.toggleIcon.setImageResource(R.drawable.arrow_up)
expandNow = false
}
}
else {
holder.recyclerView.visibility = View.GONE
holder.toggleIcon.setImageResource(R.drawable.arrow_down)
expandNow = false
}
}
// if (items[0].MenuSubCategories != null) {
// holder.recyclerView.visibility = View.VISIBLE
// holder.toggleIcon.setImageResource(R.drawable.arrow_up)
// expandNow = true
// }
if (items[position].MenuSubCategories.find { i -> i.MenuItems.isNotEmpty() &&
i.MenuItems.find { j -> j.Deals.isNotEmpty() } != null
} != null)
holder.icon.visibility = View.VISIBLE
else
holder.icon.visibility = View.GONE
}
}
class RestMenuViewHolder (view: View): RecyclerView.ViewHolder(view) {
var recyclerView = view.menuSubCat
var menuCatName = view.menuCatName
var toggle = view.menuCategoryToggler
var toggleIcon = view.toggleImg
var icon = view.menuCatDealLogo
var parent = view
}