大家好,我对ViewPager
有疑问;这是我的代码......
public class FragmentViewPager extends Fragment {
ArrayList<Prodotto> listaProdotti = new ArrayList<Prodotto>();
public int posizione;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_view_pager, container, false);
ViewPager pager = (ViewPager) root.findViewById(R.id.viewPager);
MyPagerAdapter mPageAdapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), this.posizione);
pager.setAdapter(mPageAdapter);
pager.setCurrentItem(this.posizione);
return root;
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public int posizioneIniziale;
public MyPagerAdapter(FragmentManager fm, int posizione) {
super(fm);
this.posizioneIniziale = posizione;
//this.getItem(posizione);
}
@Override
public Fragment getItem(int pos) {
//pos = this.posizioneIniziale;
Log.w(null, "Posizione del fragment selezionato: " + pos);
FragmentVisualizzaProdotto fragment = new FragmentVisualizzaProdotto();
fragment.urlImmagine = listaProdotti.get(pos).getUrlImmagine();
fragment.nomeProdotto = listaProdotti.get(pos).getDescrizione();
fragment.prezzo = listaProdotti.get(pos).getPrezzo();
Log.w(null, "Nome e Prezzo del fragment selezionato: " + fragment.nomeProdotto + " e " + fragment.prezzo);
fragment.commento = listaProdotti.get(pos).getCommento();
//this.posizione = pos;
return fragment;
}
@Override
public int getCount() {
return listaProdotti.size();
}
}
}
问题是,当我滚动ViewPager
的元素时,它从ArrayList
的其他列表中获取元素(与MyPagerAdapter中传递的元素不同),任何人都可以帮助我吗?提前谢谢
答案 0 :(得分:0)
我已经更改了在适配器中传递arrayList的代码,所以......
public class FragmentViewPager extends Fragment {
ArrayList<Prodotto> listaProdotti = new ArrayList<Prodotto>();
public int posizione;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_view_pager, container, false);
ViewPager pager = (ViewPager) root.findViewById(R.id.viewPager);
MyPagerAdapter mPageAdapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), this.posizione, listaProdotti);
pager.setAdapter(mPageAdapter);
pager.setCurrentItem(this.posizione);
return root;
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public int posizioneIniziale;
ArrayList<Prodotto> listaProdotti = new ArrayList<Prodotto>();
public MyPagerAdapter(FragmentManager fm, int posizione, ArrayList<Prodotto> listaProdotti) {
super(fm);
this.posizioneIniziale = posizione;
this.listaProdotti = listaProdotti;
//this.getItem(posizione);
}
@Override
public Fragment getItem(int pos) {
//pos = this.posizioneIniziale;
Log.w(null, "Posizione del fragment selezionato: " + pos);
FragmentVisualizzaProdotto fragment = new FragmentVisualizzaProdotto();
fragment.urlImmagine = listaProdotti.get(pos).getUrlImmagine();
fragment.nomeProdotto = listaProdotti.get(pos).getDescrizione();
fragment.prezzo = listaProdotti.get(pos).getPrezzo();
Log.w(null, "Nome e Prezzo del fragment selezionato: " + fragment.nomeProdotto + " e " + fragment.prezzo);
fragment.commento = listaProdotti.get(pos).getCommento();
//this.posizione = pos;
return fragment;
}
@Override
public int getCount() {
return listaProdotti.size();
}
}
}
答案 1 :(得分:0)
除了一些建议外,这对你没有帮助: 1.不要使用getActivity()。getSupportFragmentManager(),而是使用getChildFragmentManger() 2.不要像你那样设置值
FragmentVisualizzaProdotto fragment = new FragmentVisualizzaProdotto();
fragment.urlImmagine = listaProdotti.get(pos).getUrlImmagine();
fragment.nomeProdotto = listaProdotti.get(pos).getDescrizione();
fragment.prezzo = listaProdotti.get(pos).getPrezzo();
Log.w(null, "Nome e Prezzo del fragment selezionato: " + fragment.nomeProdotto + " e " + fragment.prezzo);
fragment.commento = listaProdotti.get(pos).getCommento();
使用参数。
Bundle args = new Bundle();
arg.put()//put params
fragment.setArguments(args)