【发布时间】:2020-12-26 12:36:21
【问题描述】:
这是我在 MainActivity 中过滤的代码
search!!.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
adapter!!.filter.filter(charSequence.toString())
}
override fun afterTextChanged(editable: Editable) {}
})
这是我在适配器类中的代码
override fun getFilter(): Filter {
return object : Filter() {
override fun performFiltering(constraint: CharSequence?): FilterResults {
//new list for filtering
newList.clear()
val results = FilterResults()
if (constraint.isNullOrBlank()) {
//dataList is a list with data from mainActivity
newList!!.addAll(dataList!!)
} else {
val filterPattern = constraint.toString().toLowerCase().trim { it <= ' ' }
for (item in dataList) {
if (item.sv_number.toString().toLowerCase().contains(filterPattern)) {
newList!!.add(item)
}
}
}
results.values = newList
results.count = newList!!.size
return results
}
override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
if (newList.isNullOrEmpty()) {
Log.d("there is nothing", "nothing")
} else dataList.clear()
dataList.addAll(newList)
notifyDataSetChanged()
}
}
}
过滤工作正常,如果我输入例如 123,它将过滤。但是当我删除我输入的内容(123)时,它不会回到旧视图,所有数据,所以我可以再次搜索。仅显示带有过滤数据的新过滤视图。我在这里做错了什么?
【问题讨论】:
标签: android kotlin filter filtering