Skip to content Skip to sidebar Skip to footer

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"