Gerardo Ernesto Rodriguez Navar
01/21/2022, 11:48 AMViewHolder
that uses compose to render, but when I click it, the whole screen jumps. Here is the video:Gerardo 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