如何解决java.lang.NullPointerException:null 不能转换为非空类型 java.util.ArrayList<ModelClass>
我的阵列适配器过滤器部分出现错误。当我尝试在自动完成文本视图应用程序崩溃中输入值并显示以下错误时,一切正常。
java.lang.NullPointerException: null 不能转换为非空类型 java.util.ArrayList
以下是我的代码
class ProductSearchAdapter(
context: Context,private var list: ArrayList<SaleFilterListModel>
) : ArrayAdapter<SaleFilterListModel>(context,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
}
}
}
解决方法
不看堆栈跟踪很难判断,但我认为 publishResults
函数是这里的罪魁祸首,因为它试图将 Nullable 类型 (results?.values
) 强制转换为不可为空的 ArrayList<SaleFilterListModel>
。
当然,如果为 publishResults
参数传递了 null
值,则可能就是这种情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。