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?