android - 适配器中的搜索过滤器在 popBackStack 之后不起作用
问题描述
我的ParentFragment
有viewpager
哪个有ChildFragment1
和ChildFragment2
。
viewpager
EditText
由的更改项目ParentFragment
。
ChildFragment2
has Recyclerview
which has Filter, 它Recyclerview
被
EditText
of过滤ParentFragment
。
如果我单击一个项目Recyclerview
,navController
导航到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
我不知道。
解决方案
推荐阅读
- java - 如何在 Android Studio 中使用导入的 .so 库代码?
- sql - 如何在 Oracle 中以同一列的两种类型聚合为中心?
- apache-spark - 为什么 spark 任务看起来像按顺序运行
- r - 在 rmarkdown 中创建模板
- laravel - 如何修复“PHP Parse 错误:语法错误,第 156 行 /var/www/.../vendor/laravel/RoutesRequests.php 中的意外 '='”
- java - 我可以修改和重置 java 方法参数吗
- html - 纯 HTML 后退按钮
- laravel - 图像不显示
- eclipse-rcp - 使用 tycho-p2-extras 镜像 Eclipse p2 存储库时如何获取源包
- julia - 向量数组的条件赋值语法