kotlin - 用户在 Kotlin 中的 editText 上键入时如何调用 recyclerview
问题描述
我创建了一个 editText 过滤器搜索。我希望 recyclerView 在用户输入时显示。在我的应用程序中,当用户键入过滤器时显示,但列表 recyclerView 也显示。也许这个视频可以解释我的意思filterSearch
解决方案
这是我的有效代码
适配器
class SearchAdapter(val context: Context, val item:List<Item>) : RecyclerView.Adapter<SearchAdapter.ChildHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChildHolder {
val inflator = LayoutInflater.from(context).inflate(R.layout.search_container,parent,false)
return ChildHolder(inflator)
}
override fun getItemCount(): Int {
return item.size
}
override fun onBindViewHolder(holder: ChildHolder, position: Int) {
val current = item[position]
holder.item.name.setText(current.name)
}
class ChildHolder(view: View) : RecyclerView.ViewHolder(view){
val item = view.country_container
}
}
data class Item(val name:String)
主要活动
class MainActivity : AppCompatActivity() {
var item:ArrayList<Item> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
item.add(
Item("russia")
)
item.add(
Item("india")
)
item.add(
Item("usa")
)
item.add(
Item("china")
)
item.add(
Item("uk")
)
item.add(
Item("brazil")
)
item.add(
Item("pakistan")
)
item.add(
Item("sri lanka")
)
search_view.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(query: String?): Boolean {
TODO("Not yet implemented")
}
override fun onQueryTextChange(newText: String?): Boolean {
val filtered = item.filter { item ->
item.name.contains(newText.toString())
}
constructRecycleView(filtered)
return true
}
})
}
private fun constructRecycleView(item:List<Item>){
val adapter = SearchAdapter(this,item)
recycle_view.adapter = adapter
recycle_view.layoutManager = LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
}
}
constructRecycleView方法总是创建新的适配器,你也可以创建方法来改变适配器项并调用notifyDatasetChanged方法, 如果没有你的应用程序给出错误,请自行实现onQueryTextSubmit
kotlin.NotImplementedError: An operation is not implemented: Not yet implemented
输出
推荐阅读
- html - 我想将最大值(带有 id 并来自 ajax)设置为 Html.EditorFor()
- python - 为什么 Tensorflow 不显示 Constant Ops 的输出节点,而是显示 Variable Ops 的输出节点?
- python - 如何从手写文字的图像中分割字符
- sql-server - 使用 ADODB.Connection 的运行时错误 -2147467259(80004005)
- function - SAS 中的星期几函数
- php - Else 语句变量不能在 PHP 中存储数据
- entity-framework - 实体框架中完全定义的关系是一种代码味道吗
- java - 在 Spring Boot 执行器健康检查 API 中启用日志记录
- c# - ILogger 类型的支持字段,但 ILogger 类型的注入参数
- java - 如何同时插入 2 个表(java、jsp、servlet)