【问题标题】:Android Search in Fragment片段中的 Android 搜索
【发布时间】:2014-08-14 14:35:03
【问题描述】:

我的项目结构是

  1. 带有 searchView、ViewPager 和 FragmentStatePagerAdapter 的主选项卡 Activity。

  2. FragmentStatePagerAdapter 为每个 ViewPager 生成一个 Fragment。

  3. 每个片段都有 ExpandableListView 和 BaseExpandableListAdapter。

如何提交查询文本以刷新片段?

【问题讨论】:

  • 为什么不创建一个基本的抽象片段,你的每个片段都可以继承它,每个片段都覆盖抽象类中定义的方法 refresh(String textFromSearch) (或任何你想要的)?

标签: android search fragment refresh adapter


【解决方案1】:

感谢 Guardanis 的建议,它有效!

1.在基础Fragment中创建一个方法。

public void updateView(String searchQuery)
{
    View rootView=getView();
    expListViewPriceList = (ExpandableListView)rootView.findViewById(R.id.lvExpPriceList);
    listAdapter=new PriceListAdapter(this.getActivity().getApplicationContext(),this.productCategory,searchQuery);
    expListViewPriceList.setAdapter(listAdapter);       
}

2.在FragmentStatePagerAdapter中,我还创建了一个方法来获取正确的fragment。

2.1 声明一个 Map 来存储 Fragments

私有映射 mPageReferenceMap = new HashMap();

2.2 将Fragment实例放入地图中

mPageReferenceMap.put(Integer.valueOf(index), priceListFragment);

2.3 创建获取正确片段的方法

public PriceListFragment getFragment(int key) {     
    return mPageReferenceMap.get(key);
}   

3.获取正确的片段以调用updateView()。

        @Override
        public boolean onQueryTextSubmit(String keyword) {

            mAdapter.getFragment(viewPager.getCurrentItem()).updateView(keyword);   
            return false;
        }

参考

1.http://tamsler.blogspot.tw/2011/11/android-viewpager-and-fragments-part-ii.html

2.http://android-flash-cards.googlecode.com/svn/tags/blog-20111123/src/org/thomasamsler/android/flashcards/CardsPagerActivity.java

【讨论】:

    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2013-09-28
    相关资源
    最近更新 更多