Gerardo Ernesto Rodriguez Navar
01/21/2022, 11:48 AMViewHolderGerardo Ernesto Rodriguez Navar
01/21/2022, 11:48 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:49 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:50 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:50 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:51 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:52 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:52 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:52 AMGerardo Ernesto Rodriguez Navar
01/21/2022, 11:53 AMDominaezzz
01/21/2022, 12:24 PMDominaezzz
01/21/2022, 12:25 PMDominaezzz
01/21/2022, 12:29 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 1:36 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 1:36 PMNEW ADAPTER AND VIEWHOLDER
private class DateSelectorAdapter : RecyclerView.Adapter<DateSelectorAdapter.DateChipViewHolder>() {
    private val dates = mutableListOf<DateChip>()
    private var onDateSelectedListener: ((dateChip: DateChip) -> Unit)? = null
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DateChipViewHolder {
        return DateChipViewHolder(ComposeView(parent.context))
    }
    /*override fun onViewRecycled(holder: DateChipViewHolder) {
        holder.composeView.disposeComposition()
        super.onViewRecycled(holder)
    }*/
    override fun onBindViewHolder(holder: DateChipViewHolder, position: Int) {
        holder.bind(dates[position])
    }
    override fun getItemCount(): Int {
        return dates.size
    }
    fun setData(dates: List<DateChip>) {
        this.dates.clear()
        this.dates.addAll(dates)
        notifyDataSetChanged()
    }
    fun setOnDateSelectedListener(onDateSelectedListener: (dateChip: DateChip) -> Unit) {
        this.onDateSelectedListener = onDateSelectedListener
    }
    inner class DateChipViewHolder(val composeView: ComposeView) :
        RecyclerView.ViewHolder(composeView) {
        private var dateChip by mutableStateOf<DateChip?>(null)
        init {
            composeView.setViewCompositionStrategy(
                ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
            )
            composeView.setContent {
                DateChip(
                    onClick = {
                        dateChip?.let {
                            onDateSelectedListener?.invoke(it)
                        }
                    },
                    isSelected = dateChip?.isSelected ?: false,
                    text = dateChip?.formattedDate ?: "",
                    modifier = Modifier
                        .padding(
                            vertical = 8.dp,
                            horizontal = 4.dp
                        )
                        .defaultMinSize(minHeight = 48.dp)
                )
            }
        }
        fun bind(dateChip: DateChip) {
            this.dateChip = dateChip
        }
    }
}Gerardo Ernesto Rodriguez Navar
01/21/2022, 1:59 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 1:59 PMDominaezzz
01/21/2022, 2:02 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 2:06 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 2:06 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 2:07 PMDominaezzz
01/21/2022, 2:12 PMGerardo Ernesto Rodriguez Navar
01/21/2022, 2:53 PM