在清除搜索视图中的数据时,它应该删除过滤列表并填充原始列表
On clearing the data in search view, it should erase the filtered list and populate the original list
HomeFragment.kt
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return setupBindings(inflater, container, savedInstanceState)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
//filter the data in step 2
return false
}
override fun onQueryTextChange(query: String): Boolean {
orderHistoryViewModel.search(query)
return false
}
})
}
我在Fragment中写了setOnQueryTextListener。当我 运行 应用程序时,它只工作一次。但是,每次我从搜索栏中清除数据并在输入新数据时再次过滤时,如何删除过滤后的列表并填充原始列表。
我在viewmodel中写了搜索功能。下面的代码从原始列表中过滤数据并填充过滤后的列表。
ViewModel.kt
fun search(query: String) {
var filteredList =
orderHistoryDetails?.orderList?.value?.filter { x -> x.order.contains(query) }
orderHistoryDetails?.orderList?.value = filteredList
}
您还需要存储原始列表,并检查查询字符串是否为空。
fun search(text: String) {
val filterList: MutableList<OrderItem> = arrayListOf()
if (text.trim().length == 0) {
filterList.clear()
filterList.addAll(listOriginal)
notifyDataSetChanged()
} else {
listOriginal.filter {x->
x.order.toUpperCase.contains(text)
}.apply {
filterList.clear()
filterList.addAll(this)
}
notifyDataSetChanged()
}
}
HomeFragment.kt
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return setupBindings(inflater, container, savedInstanceState)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
//filter the data in step 2
return false
}
override fun onQueryTextChange(query: String): Boolean {
orderHistoryViewModel.search(query)
return false
}
})
}
我在Fragment中写了setOnQueryTextListener。当我 运行 应用程序时,它只工作一次。但是,每次我从搜索栏中清除数据并在输入新数据时再次过滤时,如何删除过滤后的列表并填充原始列表。
我在viewmodel中写了搜索功能。下面的代码从原始列表中过滤数据并填充过滤后的列表。
ViewModel.kt
fun search(query: String) {
var filteredList =
orderHistoryDetails?.orderList?.value?.filter { x -> x.order.contains(query) }
orderHistoryDetails?.orderList?.value = filteredList
}
您还需要存储原始列表,并检查查询字符串是否为空。
fun search(text: String) {
val filterList: MutableList<OrderItem> = arrayListOf()
if (text.trim().length == 0) {
filterList.clear()
filterList.addAll(listOriginal)
notifyDataSetChanged()
} else {
listOriginal.filter {x->
x.order.toUpperCase.contains(text)
}.apply {
filterList.clear()
filterList.addAll(this)
}
notifyDataSetChanged()
}
}