我正在尝试在RecyclerView中添加搜索过滤功能。但应用程序因以下错误而崩溃:
科特林。TypeCastException:null不能转换为非null类型kotlin。收藏。请登录com。卡贝拉什。电影。用户界面。PostListAdapter$searchFilter$1。在android上发布结果(PostListAdapter.kt:87)。小装置。筛选$ResultsHandler。android上的handleMessage(Filter.java:284)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:107)。操作系统。活套。loop(Looper.java:214)
适配器:
class PostListAdapter: RecyclerView.Adapter<PostListAdapter.ViewHolder>(), Filterable {
private lateinit var postListFiltered:List<Data>
private lateinit var postListFull:List<Data>
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding: ListItemBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.context), R.layout.list_item, parent, false)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(postListFiltered[position])
}
override fun getItemCount(): Int {
return if(::postListFiltered.isInitialized) postListFiltered.size else 0
}
fun updatePostList(postList:List<Data>){
this.postListFiltered = postList
notifyDataSetChanged()
}
class ViewHolder(private val binding: ListItemBinding): RecyclerView.ViewHolder(binding.root){
private val viewModel = MoviesViewModel()
fun bind(post:Data){
viewModel.bind(post)
binding.viewModel = viewModel
}
}
override fun getFilter(): Filter? {
return searchFilter
}
private val searchFilter: Filter = object : Filter() {
override fun performFiltering(constraint: CharSequence?): FilterResults? {
val filteredList: MutableList<Data> = ArrayList()
if (constraint == null || constraint.isEmpty()) {
filteredList.addAll(postListFull)
} else {
val filterPattern = constraint.toString().toLowerCase().trim()
for (item in postListFull) {
if (item.title.toLowerCase().contains(filterPattern) || item.genre.toLowerCase().contains(filterPattern)) {
filteredList.add(item)
}
}
}
val results = FilterResults()
results.values = filteredList
return results
}
override fun publishResults(constraint: CharSequence?,results: FilterResults) {
postListFiltered = (results.values as List<Data>)
notifyDataSetChanged()
}
}
}
如果你需要任何其他的课堂文件,请一定告诉我。有人能帮我解决吗?
正如另外两个答案正确地指出的那样,你的会产生结果。值
为空。但是代码清楚地表明,从performFiltering
返回的FilterResults总是有一个非空的值
字段。这怎么会发生?
简单看一下Filter
源代码给出了一个可能的答案:
// Filter.RequestHandler.handleMessage(Message msg)
try {
args.results = performFiltering(args.constraint);
} catch (Exception e) {
args.results = new FilterResults();
Log.w(LOG_TAG, "An exception occured during performFiltering()!", e);
}
简单地说,如果performFiltering()
抛出异常,则过滤器会捕获该异常,并使用空的FilterResults来代替否则将返回的内容。此异常的堆栈跟踪可以在logcat中找到。
查看您的performFiltering
函数,唯一突出的异常是UninitializedPropertyAccessException
。如果这是抛出的异常,可以通过检查fullPostList
属性是否已初始化或显式将其初始化为空列表来修复它。
在执行强制转换之前,您必须执行空检查,请按以下方式修改pulishResults方法。
override fun publishResults(constraint: CharSequence?,results: FilterResults) {
postListFiltered = if(results == null || results.values == null)
ArrayList<Data>()
else
results.values
notifyDataSetChanged()
}
就是这一行:results.valuesList
结果。值
为空,您告诉它为非空列表,但它不能这样做。
我正在尝试初始化菜单上的自定义搜索工具(3d库),但我得到了错误。 但这无助于第136行对应于 菜单的xml
请不要标记为重复,因为问题略有不同--- 风景:- 我一直在使用改装执行删除购物车。。 如果至少存在一个项目,它将显示在recyclerview中 2.if购物车是空的,它崩溃与上述错误 这是我的适配器代码:- 这是我的活动: } 我试过这个- 1-- 2-- 3-- 对Arraylist执行Mutablelist后的错误日志 但似乎没有什么是处理null 请帮帮我
问题内容: 让我们假设下表(例如,几个内部join语句的结果): 例如,您可以从以下语句中获取: 现在,如果我想将t1.column_1和t2.column_2总结如下 结果显示如下: 我的问题基本上是:有没有一种方法可以将NULL类型转换为0以便进行一些数学运算? 我曾尝试和,而是保持一个。 问题答案: 使用的列值转换到零。或者,COALESCE函数将执行相同的操作,除了(1)符合ANSI标准,
从上面的标题来看,目前我遇到了一个问题,即无法从一个模型类转换到另一个模型类。我写的代码有问题吗?请随时向我询问更多信息。非常感谢。 我怀疑: 这种方法“selectTheOldFnException”有一些错误,那就是使用了hibernate,但我不确定这个理论。 REST控制器 使用HIBERNATE-MatchingEngine选择POJO。班 POJO班 例外代码
我将调用(used)的响应传递给一个类,并尝试将其强制转换到我的模型类。由于我对调用使用的是registfit,因此它在使用GSON将其转换为模型类对象之前,根据服务器的响应生成一个链接的hashmap。(这就是我所理解的,如果我错了请纠正我)。我已经附加了一个使用response对象进行调试时可以看到的图像。如何将此响应转换为我的模型类或类型对象的对象。当我试图将类型对象强制转换到活动中的模型类
应用程序属性 我也试图改变mysql的版本仍然一样。我该怎么解决这个?