Android 按父片段从子片段获取对象实例
问题: 我有这样一个Android 按父片段从子片段获取对象实例,android,android-fragments,Android,Android Fragments,问题: 我有这样一个布局: 在父片段中我有一个搜索视图负责过滤子片段中的回收视图 子片段位于表格布局查看页面组合中 因此,OnQueryTextListener位于父片段中,我必须从子片段中获取一个recyclerviews适配器的实例来进行过滤 正确的方法是什么 我所尝试的: 我搜索并找到了getChildFramgentManager,它返回子片段的实例。但是显然,这些片段应该动态创建吗?我不知道如何使用viewpager。因此,如果有办法使用GetChildFramGetManager和
布局
:
在父片段中
我有一个搜索视图
负责过滤子片段中的回收视图
子片段
位于表格布局
查看页面
组合中
因此,OnQueryTextListener
位于父片段中,我必须从子片段中获取一个recyclerviews适配器的实例来进行过滤
正确的方法是什么
我所尝试的:
我搜索并找到了getChildFramgentManager
,它返回子片段的实例。但是显然,这些片段应该动态创建吗?我不知道如何使用viewpager
。因此,如果有办法使用GetChildFramGetManager
和viewpager
实现这一点,请解释
我的代码:
我写的所有东西都是标准的程序,我不想在项目中添加一些改变结果的东西,所以我不会花时间添加代码,但是如果代码是必需的,请这样说,我将添加它。在viewpager的适配器中,您可以将对子片段的引用存储到列表中,并遍历子片段以调用方法
大概是这样的:
父片段
class ParentFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.parent_fragment, container, false)
val search : SearchView = findViewById(R.id.search)
val pager : ViewPager = findViewById(R.id.pager)
val adapter = ViewPagerAdapter(supportFragmentManager)
pager.adapter = adapter
search.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
adapter.filter(query ?: "")
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
return true
}
})
return view
}
}
class ChildFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.child_fragment, container, false)
// get reference to recyclerview, set adapter...
return view
}
fun filter(text: String) {
// do job here
}
}
寻呼机适配器
class ViewPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
private var mList : MutableList<ChildFragment> = ArrayList()
init {
mList.add(ChildFragment())
mList.add(ChildFragment())
}
fun filter(text: String) {
mList.forEach {
it.filter(text)
}
}
override fun getItem(position: Int): Fragment {
return mList.get(position)
}
override fun getCount(): Int {
return mList.size
}
}
抱歉,我不是android新手,我应该如何在每次提交搜索查询时刷新viewpager?