ActionBar + Tab导航(MapView + ListView)片段

时间:2012-01-10 10:00:47

标签: android android-listview android-mapview android-fragments android-actionbar

我想知道如何使用listfragment,同时使用列表顶部带有4个过滤器按钮的静态线性布局。这是问题所在:

首先,我使用ActionBarSherlock中的操作栏+标签导航:

QuestList扩展FragmentMapActivity实现ActionBar.TabListener

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getTabs();
}

private void getTabs() {
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.Tab tab1 = getSupportActionBar().newTab();
    tab1.setText("Geo");
    tab1.setTabListener(this);
    getSupportActionBar().addTab(tab1);

    ActionBar.Tab tab2 = getSupportActionBar().newTab();
    tab2.setText("No Geo");
    tab2.setTabListener(this);
    getSupportActionBar().addTab(tab2);
}

...

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    if (tab.getText().toString().compareTo("Geo") == 0) {
        getSupportFragmentManager().beginTransaction().replace(android.R.id.content, Map.getInstance()).commit();
    }
    else {
        getSupportFragmentManager().beginTransaction().replace(android.R.id.content, List.newInstance(0)).commit();     
    }
}

我遇到了MapView的一些问题,但我终于解决了所有这些问题。现在的问题是我想要这样的东西:

Static LinearLayout + ListFragment

列表扩展了ListFragment

...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    initializations();

    getQuests();

    if (gigHash.isEmpty()) {
        TextView eList = new TextView(getActivity());
        eList.setText(R.string.no_loc_gig_no_items);
        eList.setWidth(Gravity.CENTER);
    }
    else {
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
            mAdapter = new NoLocGigAdapter(getActivity(),R.layout.gig_noloc_row_land,gigList);
        }
        else {
            mAdapter = new NoLocGigAdapter(getActivity(),R.layout.gig_noloc_row,gigList);
        }                       
        setListAdapter(mAdapter);
    }
}
...

所以我使用自己的适配器,我从服务中获取所有物品。

问题是,在执行事务时,我只能使用一个片段,并且我必须使用我自己的ArrayAdapter显示这些项目,所以我不知道如何将静态代码的一部分包含到该视图中。

有什么建议吗?我认为用碎片处理它有点奇怪!

PS:首先,我认为我可以调用一个片段,这个,在linearlayout中调用一个静态xml,里面有一个ListFragment,但我想我不能这样做,对吧?

0 个答案:

没有答案