header
unknown
kotlin
2 years ago
2.5 kB
5
Indexable
class CatalogItem(val catalog: SurveyCatalog) : AbstractExpandableHeaderItem<CatalogItem.CatalogViewHolder, CatalogSubItem>() { init { val subItems = mutableListOf<CatalogSubItem>() catalog.client?.forEach { val subItem = CatalogSubItem(it, this) Log.d("sado", ": ${it == null}" ) subItems.add(subItem) } setSubItems(subItems) } class CatalogViewHolder( view: View?, adaper: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>? ) : ExpandableViewHolder(view, adaper) { var name: TextView? var description: TextView? var expandButton: ImageView? init { name = view?.findViewById(R.id.survey_name) description = view?.findViewById(R.id.survey_desc) expandButton = view?.findViewById(R.id.expand_btn) } } override fun equals(other: Any?): Boolean { other?.let { return this == (it as CatalogItem) } return false } override fun hashCode(): Int { return Objects.hash(catalog.id) } override fun getLayoutRes(): Int { return R.layout.listitem_dynamic_checklist_catalog } override fun createViewHolder( view: View?, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>? ): CatalogViewHolder = CatalogViewHolder(view, adapter) override fun bindViewHolder( adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>?, holder: CatalogViewHolder?, position: Int, payloads: MutableList<Any>? ) { holder?.apply { name?.text = catalog.surveyName description?.text = catalog.surveyDescription if (adapter?.isExpanded(position) == true) { expandButton?.setImageDrawable( ContextCompat.getDrawable( itemView.context, R.drawable.ic_up_arrow ) ) } else { expandButton?.setImageDrawable( ContextCompat.getDrawable( itemView.context, R.drawable.ic_down_arrow ) ) } itemView.setOnClickListener { Log.d("sado", "bindViewHolder: " + subItems.size) } } } }
Editor is loading...