0

说实话,我不知道该写什么标题作为这个问题的标题,因为它有点复杂。如何在SearchView输入后启动片段

我有一个活动,一个片段和一个适配器。

该活动有一个ViewPager哪个适配器是FragmentStatePagerAdapter并且根据所选的项目或位置,它创建该片段的新实例。

片段适配器加载RecyclerView中的项目列表。 FragmentStatePagerAdapter中的每个新实例都是RecyclerView的不同字符串数组。

我在活动工具栏中设置了一个搜索视图,当搜索中有输入时,它应该在片段中启动一个函数。

这些都是在片段是搜索的监听功能

@Override 
    public boolean onQueryTextSubmit(String s) { 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String s) { 
     performSearch(s); 
     return false; 
    } 

    @Override 
    public boolean onClose() { 
     performSearch(null); 
     return false; 
    } 

    private void performSearch(final String query) { 
     if (mTimer != null) { 
      mTimer.cancel(); 
      mTimer.purge(); 
     } 
     mTimer = new Timer(); 
     mHandler = new Handler(); 
     mTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       mHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         mAdapter.filter(query); 
        } 
       }); 
      } 
     }, 150); 
    } 

的事情是,我不知道如何获得当前片段,所以我可以设置fragment.onQueryTextChange(searchInput) 并防止其创建片段的新实例。

我想要做的,简而言之,就是能够使用已定义的实例获取片段,并使其在搜索输入中的文本过滤在实例中定义的数组中,在同一活动和页面中的ViewPager

我不知道我是否足够清楚。但如果你能帮忙,我会非常感激。

回答

1

我不确定,您正在寻找哪个片段。 您可以通过getFragmentManager().findFragmentById(R.id.container)mAdapter.getItem(position)的适配器从活动中获得片段。然后确定您可以使用instanceof检查片段类,然后调用您想要的任何方法。

+0

我有一个ViewPager和它的适配器是一个FragmentStatePagerAdapter –

+0

和whre是问题吗?你可以用getItem()从适配器中获取片段 – Kikju