为什么数组列表会阻塞用户界面

时间:2018-10-12 06:49:46

标签: android list arraylist kotlin android-asynctask

我将大数据从服务器保存到阵列列表,我正在使用自定义阵列列表搜索列表,例如: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,但没有解决。 我知道这可能是包含列表很大的原因,但我不知道其他选择。 请建议我如何在项目中进行局部过滤。

0 个答案:

没有答案