2012-04-12 2 views
1

EDIT: Я понял это, благодаряFragmentPagerAdapter с ArrayListFragment

Я пытался навсегда теперь реализовать отдельные ListViews в каждой из страниц моего ViewPager в. Я хорошо понимаю this tutorial, но он создает только один ListView, который используется для каждой страницы.

Я хотел бы иметь несколько списков ListView на каждой странице, из которых я могу контролировать, что происходит onClick для ListView каждой страницы. У меня есть приложение, работающее с одним ListView (как в учебнике), но я плохо борюсь с несколькими.

Мой код опубликован ниже, и я попробовал массу разных вещей, и мне просто нужно двигаться дальше в своем развитии. Спасибо за помощь

private static class MyAdapter extends FragmentPagerAdapter implements 
     TitleProvider { 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return ArrayListFragment.newInstance(position); 
    } 

    @Override 
    public int getCount() { 
     return Arrays.TITLES.length; 
    } 

    public String getTitle(int position) { 
     return Arrays.TITLES[position]; 
    } 

} 

public static class ArrayListFragment extends ListFragment { 
    int mNum; 

    /** 
    * Create a new instance of CountingFragment, providing "num" as an 
    * argument. 
    */ 
    static ArrayListFragment newInstance(int num) { 
     ArrayListFragment f = new ArrayListFragment(); 

     // Supply num input as an argument. 
     Bundle args = new Bundle(); 
     args.putInt("num", num); 
     f.setArguments(args); 

     return f; 
    } 

    /** 
    * When creating, retrieve this instance's number from its arguments. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.list_layout, container, false); 
     return v; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, Arrays.accTEAMS)); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     Log.i("FragmentList", "Item clicked: " + id); 
    } 
} 

Это один из моих ListFragments:

public class ACCfragment extends ListFragment { 
View v; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.list_layout, null); 
} 

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

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
      android.R.layout.simple_list_item_1, Arrays.accTEAMS); 
    setListAdapter(adapter); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 

} 
+0

Не могли бы вы рассказать нам, что версия API вы используете, и которые поддерживают пакеты, которые вы используете (если таковые имеются) ? Правила для FragmentPagerAdapter могут варьироваться в зависимости от этих версий. – losttime

+1

Вы хотите поделиться своим мнением? –

ответ

0

Попробуйте это ...

+0

Это не решает проблемы, которые у меня есть. У меня возникли проблемы с обслуживанием отдельных списков ListView для каждой страницы. – ericcarboni

+0

поместил тот же самый переключатель в общедоступный View onCreateView (LayoutInflater inflater, контейнер ViewGroup, Bundle savedInstanceState). Для каждого возвращаем другой xml. Просто убедитесь, что вы отслеживаете, какая страница у вас на самом деле, или вы будете много работать. – jsb

+0

Но поскольку я использую разные фрагменты ListView, у меня нет отдельных файлов xml для каждого. Как вернуть каждый фрагмент? – ericcarboni

0

вы должны использовать пакет для отправки Params между фрагментами.

отправка из Fragment1:

Bundle args = new Bundle(); 
args.putInt("my_integer",_stationId); 
FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction ft = fragmentManager.beginTransaction(); 
Fragment fragment = Fragment.instantiate(getActivity(), Fragment2.class.getName(), args); 
ft.replace(R.id.layout, fragment); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
ft.commit(); 

получать и получать в FRAGMENT2:

getArguments().getInt("my_integer") 
+0

Я не пытаюсь передать что-либо между моими фрагментами .. просто пытаюсь отобразить различные фрагменты ListView на каждой странице в моем представлении – ericcarboni

Смежные вопросы