Adapter Data Mutablelist Crash When Modified
I'm making a SearchView Filter for a RecyclerView, in my Filter object, in the fun 'publishResults', my app crash because i'm trying to modify a mutableListOf, but the data.clear()
Solution 1:
Instead of using data inside onBindViewHolder
you should create another list variable and use it
var filterList : mutableListOf<FishModel>()
overridefunonBindViewHolder(holder: ViewHolder, position: Int) {
val item = filterList[position]
holder.bind(item, clickListener)
}
For the filter I am showing some references, follow a similar way as below:
privateval customFilter: Filter = object : Filter() {
overridefunperformFiltering(constraint: CharSequence): FilterResults {
filterList =
if (constraint.isEmpty()) {
items.toMutableList()
} else {
items.filter {
it.name.contains(constraint, true) ||
it.name == constraint ||
it.price.toString() == constraint
}
.toMutableList()
}
if (sortByPV) {
filterList.sortByDescending { it.pointValue }
}
return FilterResults().apply {
values = filterList
count = filterList.size
}
}
overridefunpublishResults(constraint: CharSequence, results: FilterResults) {
notifyDataSetChanged()
}
}
overridefungetFilter(): Filter = customFilter
overridefungetItemCount() = filterList.size
Here, you may need to update your code accordingly for item click listener.
Post a Comment for "Adapter Data Mutablelist Crash When Modified"