Панель навигации ActionBar + Tab (MapView + ListView) фрагменты - PullRequest
1 голос
/ 10 января 2012

Мне интересно, как я могу работать с фрагментом списка, и в то же время, используя статическое линейное расположение с 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, но я наконец исправил их все. Теперь проблема в том, что я хочу что-то вроде этого:

Статическая линейная планировка + 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: Сначала я подумал, что мог бы вызвать фрагмент, и это, вызывая статический xml внутри linearlayout и ListFragment внутри, но я думаю, что не могу этого сделать, верно?

...