android 中的 Viewpager 适配器

Viewpager adapter in android

为什么我的寻呼机适配器不想从我的第一个项目开始。当我启动 ContainerIspiti activity 并显示第一个片段时,视图寻呼机没有显示正确的元素。 Insted of first,view pager 显示第二个元素,我无法滑动到数组列表的第一个元素。有没有人有解决办法。 这是我的 ConainterIspiti

代码
public class ContainerIspiti extends FragmentActivity{

private Button next, previous, odgovori, informacije;
private TextView textPitanja, brojPitanja;
private ViewPager pager;
private PagerAdapter mPagerAdapter;
public static ArrayList<Pitanja> getAllPitanja;
public static ArrayList<Pitanje_has_Slika> getAllImages;
private Intent intent;
private DBTools db = new DBTools(this);
private ProgressDialog pDialog;
private int broj;

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    setContentView(R.layout.activity_container_pitanja);
    Bundle bundle = new Bundle();
    intent = getIntent();
    Dohvati d = new Dohvati();
    d.execute();
        textPitanja = (TextView) findViewById(R.id.kategorijaTextViewPitanjeActivity);
        brojPitanja = (TextView) findViewById(R.id.brojPitanjaTextViewPitanjeActivity);
        pager = (ViewPager) findViewById(R.id.pagerPitanja);
        pager.setCurrentItem(0, true);
        bundle.putString("NAZIV_KATEGORIJE", intent.getStringExtra("NAZIV_KATEGORIJE"));
    }


private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        Log.i("Position je sljedeci ", String.valueOf(position));
        return PitanjaFragment.create(position);
    }

    @Override
    public int getCount() {
        Log.i("Velicina polja je ", String.valueOf(getAllPitanja.size()));
        Log.i("Prvi eleemnt liste je", getAllPitanja.get(0).getTextPitanja());
        return getAllPitanja.size();
    }

}

private class Dohvati extends AsyncTask<String, String, String>{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(ContainerIspiti.this);
        pDialog.setCancelable(false);
        pDialog.setIndeterminate(false);
        pDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        getAllPitanja = db
                .getAllPitanja(intent.getStringExtra("id_kategorije"));
        Log.i("Ovoliki je get all pitanja", String.valueOf(getAllPitanja.size()));
        getAllImages = db.getAllPitanjaImages();
        Log.i("ovoliko je slika", String.valueOf(getAllImages.size()));
        return null;
    }
    @Override
    protected void onPostExecute(String result) {
        pDialog.dismiss();
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        pager.setAdapter(mPagerAdapter);
        pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
            @Override
            public void onPageSelected(int position) {
                invalidateOptionsMenu();
                brojPitanja.setText(String.valueOf(position) + "/" + String.valueOf(getAllPitanja.size()));
                broj = position;
            }
        });
        textPitanja.setText(intent.getStringExtra("NAZIV_KATEGORIJE"));
        brojPitanja.setText(String.valueOf(broj) + "/" + getAllPitanja.size());
    }

}

}

这是我的片段activity

public class PitanjaFragment extends Fragment implements API{

public static final String ARG_PAGE = "page";

private int broj;
private ImageView image;
private TextView textPitanja;
private String uri;
private View view;
private ListView listView;
private Typeface custom_font;
private boolean odgovoreno, tocno;
private ArrayList<Odgovor> odgovorList;
private PitanjaAdapter adapter;
private DBTools db;
private List<Integer> kliknuti;
private HashMap<Integer, List<Integer>> odgBrojPitanja;

public static PitanjaFragment create(int pageNumber) {
    PitanjaFragment fragment = new PitanjaFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, pageNumber);
    fragment.setArguments(args);
    return fragment;
}

public PitanjaFragment() {

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    broj = getArguments().getInt(ARG_PAGE);
}

@Override
public View onCreateView(LayoutInflater inflater,
        @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view = inflater.inflate(R.layout.fragment_pitanja, container, false);
    image = (ImageView) view.findViewById(R.id.imageSlikaImageView);
    image.setOnClickListener(this);
    textPitanja = (TextView) view.findViewById(R.id.textPitanjaTextViewPitanjaActivity);
    db = new DBTools(getActivity());
    listView = (ListView) view.findViewById(R.id.listView);
    updateDisplay((broj+1));
    return view;
}

public void updateDisplay(int z) {

    odgovoreno = false;
    tocno = true;
    textPitanja.setText(stripHtml(String.valueOf(ContainerIspiti.getAllPitanja.get(z).getTextPitanja())));
    image.setImageBitmap(null);
    //info = ContainerIspiti.getAllPitanja.get(z).getInfo();

    Log.d("Postoji", ContainerIspiti.getAllImages.get(z).getNazivSlike() + ", ");

    for (int j = 0; j < ContainerIspiti.getAllImages.size(); j++) {
        if (ContainerIspiti.getAllImages.get(j).getIdPitanja() == ContainerIspiti.getAllPitanja.get(z)
                .getIdPitanja()
                && ContainerIspiti.getAllImages.get(j).getNazivSlike() != null) {
            Log.i("Id pitanja slike + idpitanja pitanja + idSlike",
                    ContainerIspiti.getAllImages.get(j).getIdPitanja()
                            + ", "
                            + String.valueOf(ContainerIspiti.getAllPitanja.get(z)
                                    .getIdPitanja()
                                    + ", "
                                    + ContainerIspiti.getAllImages.get(j).getIdSlika()));
            image.setVisibility(View.VISIBLE);
            //povecalo.setImageResource(R.drawable.gumb_pretrazi);
            //povecalo.setEnabled(true);
            uri = PregledZnakova.PHOTOS_BASE_URL
                    + ContainerIspiti.getAllImages.get(j).getNazivSlike();
            int rounded_value = 40;    

            DisplayImageOptions options = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.placeholder).showStubImage(R.drawable.placeholder).cacheInMemory().cacheOnDisc().displayer(new RoundedBitmapDisplayer(rounded_value)).build();
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getActivity().getApplicationContext()).defaultDisplayImageOptions(options).build();               
            ImageLoader.getInstance().init(config); 
            ImageLoader.getInstance().displayImage(uri, image,options);


            break;
            // }

        } else {
            image.setVisibility(View.GONE);
            //povecalo.setImageResource(R.drawable.gumb_pretrazi_neaktivno);
            //povecalo.setEnabled(false);
        }
    }

    odgovorList = db.getAllOdgovore(Integer.toString(ContainerIspiti.getAllPitanja.get(z)
            .getIdPitanja()));
    adapter = new PitanjaAdapter(getActivity(),
            R.layout.pitanja_entry, odgovorList);
    listView.setAdapter(adapter);

    for (int i=0;i<ContainerIspiti.getAllPitanja.size();i++){
        if (ContainerIspiti.getAllPitanja.get(i).isTocno()){
            Log.i("Ovo pitanje je tocno", ContainerIspiti.getAllPitanja.get(i).getTextPitanja());
        }
    }

}
@Override
public int getItemBroj() {
    return broj;
}

@Override
public int getPosition() {
    return broj;
}

@Override
public void setPosition(int position) {
    this.broj = position;
}

@Override
public Fragment getFragment() {
    return this;
}

}

感谢您的宝贵时间和帮助。

PitanjaFragment class 的 onCreateView() 方法中,替换:

updateDisplay((broj+1));

updateDisplay(broj);

试试这个。它应该有效。