我将大数据从服务器保存到阵列列表,我正在使用自定义阵列列表搜索列表,例如:Arraylist
通常我确实喜欢: 1.添加一个“编辑”文本,然后将TextWatcher列表器应用于防火过滤器方法。 2.我设计了一种简单的过滤方法,并过滤了一些数据并将通过列表传递给 适配器
我知道数据太大,但是我不知道另一种方法。
我的过滤方法是:
override fun doInBackground(vararg params: String): String {
if (charString.isEmpty()) {
menu_list_filtered = arrayListOf()
} else {
val filteredList = ArrayList<MenuListItem>()
var i =0
while (i < menu_list.size && !isCancelled()) {
loge(TAG,"is p canceled "+isCancelled)
val arrayList = ArrayList<ProductListItem>()
var j =0
while (j < 2 && !isCancelled()) {
loge(TAG,"is c canceled "+isCancelled)
if(menu_list.get(i).product_list!![j].p_name.toLowerCase().contains(charString.toLowerCase()) || menu_list.get(i).product_list!![j].p_desc.toLowerCase().contains(charString.toLowerCase())){
arrayList.add(ProductListItem("","", arrayListOf(), menu_list.get(i).product_list!![j].p_desc,"","", menu_list.get(i).product_list!![j].p_name,"","","","",""))
filteredList.add(MenuListItem("","","","", menu_list.get(i).c_name,arrayList))
}
++j
}
++i
}
menu_list_filtered = filteredList
}
}
最终我将menu_list_filtered传递给适配器并设置notifydatasetchanged()
问题: 当我在编辑文本上输入一个字符时,我的UI(专注于编辑文本)停留了一段时间,我不知道它花了太多时间的问题 我尝试了Asyntask,但没有解决。 我知道这可能是包含列表很大的原因,但我不知道其他选择。 请建议我如何在项目中进行局部过滤。