ViewPager与片段列表

时间:2015-06-16 08:47:12

标签: android android-fragments android-viewpager

大家好,我对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中传递的元素不同),任何人都可以帮助我吗?提前谢谢

2 个答案:

答案 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)