Как сделать так, чтобы первый элемент моей корзины открывался автоматически при загрузке страницы в android - PullRequest
0 голосов
/ 12 июля 2020

Я хочу убедиться, что первый элемент в списке всегда переключается на открытие при загрузке страницы. По независящим от меня причинам я не смог этого сделать.

В 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
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...