首页 > 解决方案 > 适配器中的搜索过滤器在 popBackStack 之后不起作用

问题描述

我的ParentFragmentviewpager哪个有ChildFragment1ChildFragment2

viewpagerEditText由的更改项目ParentFragment

ChildFragment2has Recyclerviewwhich has Filter, 它RecyclerviewEditTextof过滤ParentFragment

如果我单击一个项目RecyclerviewnavController导航到ItemDetailFragment

代码在ParentFragment这里。

searchbar.addTextChangedListener(object : TextWatcher {
                override fun afterTextChanged(s: Editable) {}

                override fun beforeTextChanged(
                    s: CharSequence, start: Int,
                    count: Int, after: Int,
                ) {}

                override fun onTextChanged(
                    str: CharSequence, start: Int,
                    before: Int, count: Int,
                )
                {
                    ChildFragment2.adapter.filter.filter(str)
                    when(str.toString()){
                        "" ->  { viewpager.setCurrentItem(0,false) }
                        else -> { viewpager.setCurrentItem(1,false) }
                    }
                }
        })

和代码在ChildFragment2这里。这就是我做的Recyclerview

var adapter:SearchAdapter = SearchAdapter(arrayListOf())

fun subscribe_UI(){
    viewmodel.datalist.observe(viewLifecycleOwner) { result ->
        
        val list:ArrayList<Data> = arrayListOf()
        list.addAll(result)

        adapter = SearchAdapter(list)

        binding.Recyclerview.adapter = adapter
        binding.Recyclerview.layoutManager = GridLayoutManager(activity, 5)
    }
} 

在我popBackStack进入ItemDetailFragment.

但是过滤后SearchAdapter根本不起作用popBackStack

我觉得里面可能有问题ChildFragment2.adapter.filter.filter(str)ParentFragment我不知道。

标签: android

解决方案


推荐阅读