I have an Error in my array adapter filter section. Everything works fine when I try to enter value in autocomplete textview app crash and show me following error.
java.lang.NullPointerException: null cannot be cast to non-null type java.util.ArrayList
following are my code
class ProductSearchAdapter(
context: Context,
private var list: ArrayList<SaleFilterListModel>
) : ArrayAdapter<SaleFilterListModel>(context, 0, list){
@SuppressLint("ViewHolder")
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val binding = ProductSearchListBinding.inflate(LayoutInflater.from(context), parent, false)
val item = list[position]
binding.searchProductName.text = item.productName
binding.searchProductRate.text = item.saleAmount
return binding.root
}
override fun getFilter(): Filter {
return productFilter
}
private val productFilter: Filter = object : Filter() {
override fun performFiltering(constraint: CharSequence): FilterResults {
val results = FilterResults()
val suggestions = ArrayList<SaleFilterListModel>()
if (constraint.isEmpty()) {
suggestions.addAll(list)
} else {
val filterPattern = constraint.toString().lowercase().trim()
for (item in list) {
if (item.productName.lowercase().contains(filterPattern)) {
suggestions.add(item)
}
}
}
results.values = suggestions
results.count = suggestions.size
return results
}
override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
list = results?.values as ArrayList<SaleFilterListModel>
notifyDataSetChanged()
}
override fun convertResultToString(resultValue: Any?): CharSequence {
return (resultValue as SaleFilterListModel).productName
}
}
}