I think i took easier approach…
i created the same view with a green background. then added requirePolice
to data
data class Crime(val id: UUID = UUID.randomUUID(),
var title: String = "",
var date: Date = Date(),
var isSolved: Boolean = false,
var requirePolice : Boolean = false)
i added it to the viewmodel as 1 or 2
class CrimeListViewModel : ViewModel() {
val crimes = mutableListOf<Crime>()
init {
for (i in 0 until 100) {
val crime = Crime()
crime.title = "Crime #$i"
crime.isSolved = i % 2 == 0
crime.requirePolice = i % 2 == 0
crimes += crime
}
}
}
In the CrimeListFragment, I linked it this way…
private inner class CrimeAdapter(var crimes: List<Crime>) : RecyclerView.Adapter<CrimeHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int)
: CrimeHolder {
return if (viewType == 1){
val view = layoutInflater.inflate(R.layout.list_item_crime, parent, false)
CrimeHolder(view)
} else {
val view = layoutInflater.inflate(R.layout.list_item_crime_police, parent, false)
CrimeHolder(view)
}
}
override fun onBindViewHolder(holder: CrimeHolder, position: Int) {
val crime = crimes[position]
holder.bind(crime)
}
override fun getItemCount() = crimes.size
override fun getItemViewType(position: Int): Int {
return when(crimes[position].requirePolice){
true -> 1
else -> 2
}
}
}
everything else remained the same…