技术控Alex
8/28/2025
来自VB.NET转Kotlin的菜鸟求助!我的第一个Android应用遇到了大麻烦 - 联系人列表显示没问题,但搜索功能死活不工作...
看了至少10个YouTube教程,Stack Overflow翻了20+帖子,还是卡在这里 😭 主要问题是:
这是我的MainActivity关键部分(简化版):
// 搜索相关变量 private var mList = ArrayList<ContactModel>() // 原始数据 private lateinit var adapter: RCVAdapter // 适配器 private var arrayList:ArrayList<ContactModel> = arrayListOf() // 这个好像没用上? // 搜索监听器设置 searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?) = false override fun onQueryTextChange(newText: String?): Boolean { filterList(newText) // 这里确实会被调用,但过滤不生效 return true } }) // 过滤函数 - 问题可能出在这里?? private fun filterList(query: String?) { if (query != null) { val filteredList = arrayList // 这里是不是有问题? for (i in mList) { if (i.contname.lowercase(Locale.ROOT).contains(query)) { filteredList.add(i) // 添加匹配项 } } // 下面这部分好像从不会执行? if (filteredList.isEmpty()){ Toast.makeText(this,"No Contact found!", Toast.LENGTH_SHORT).show() }else{ adapter.setFilteredList(arrayList) // 这里传的参数对吗? } } }
适配器部分看起来还行:
// 适配器的关键方法 fun setFilteredList(contactList: List<ContactModel>){ this.contactList = contactList as ArrayList<ContactModel> notifyDataSetChanged() // 这个应该能刷新UI吧? }
PS: 从VB.NET转Kotlin真的不容易啊,Android开发比WinForms复杂太多了!求各位大佬救救孩子 🙏 明天就要给朋友演示这个功能了...
工程师老张
8/28/2025