ViewPager InstantiateItem() Return Falsch Wert von Position

Ich bin ein Anfänger in der android Programmierung.
Ich bin mit der Schaltfläche onclick-zum hinzufügen einer neuen Seite an den viewpager unter Verwendung der codes unten. Jedoch, der viewpager Rückkehr falschen position Wert, wenn instanziieren Element wischen Aktivität.

Wischen Sie nach rechts

Richtige position: 1, 2, 3 (Seite 2, 3 und 4)

Rückkehr falschen Stelle: 2, 3, 4

Streichen Sie nach Links

Richtige position": 3, 2, 1 (Seite 4, 3 und 2)

Rückkehr falschen Stelle: 2, 1, 0

Ich will position Wert von instantiateItem() auf, um anzeigen aus einer bestimmten position aus der "views" array-Liste angezeigt werden, auf dem viewpager. Die falsche position bewirkt, dass der falsche view angezeigt werden. Hoffe mir kann jemand helfen!!! Vielen Dank im Voraus.

Schaltfläche Hinzufügen:

findViewById(R.id.btnAdd).setOnClickListener(new OnClickListener() {    
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View itemView = inflater.inflate(R.layout.image_text_1, null);

                //the array list
                views.add(itemView);

                pagerAdapter.notifyDataSetChanged();

            }
        });

ViewPager:

private class SlideAdapter extends PagerAdapter {
              ArrayList<View> views = new ArrayList<View>();

              @Override
              public int getItemPosition (Object object)
              {
                  int index = views.indexOf((View)object);
                  if(views.contains((View)object)){
                      return index;
                  }else{
                      return POSITION_NONE;
                  }     
              }

              @Override
              public Object instantiateItem (ViewGroup container, final int position)
              {
                    //for example, when I swipe to the right from page 1 to page 2, the int position return value of 2 instead of 1.
                    View v = views.get(position);

                    imagePage = (ImageView) v.findViewById(R.id.imgSlide);
                    imagePage.setOnLongClickListener(null);
                    imagePage.setLongClickable(true);
                    imagePage.setOnLongClickListener(btnImageChoose);
                    ((ViewPager)container).addView(v, 0);
                    return v;
              }

              @Override
              public void destroyItem (ViewGroup container, int position, Object object)
              {
                container.removeView (views.get(position));
              }

              @Override
              public int getCount ()
              { 
                  return views.size();
              }

              @Override
              public boolean isViewFromObject (View view, Object object)
              {
                return view == object;
              }

              public int addView (View v)
              {
                return addView (v, views.size());
              }

              public int addView (View v, int position)
              {
                views.add (position, v);
                return position;
              }

              public int removeView (ViewPager pager, View v)
              {
                return removeView (pager, views.indexOf (v));
              }

              public int removeView (ViewPager pager, int position)
              {
                pager.setAdapter (null);
                views.remove (position);
                pager.setAdapter (this);

                return position;
              }

              public View getView (int position)
              {
                return views.get (position);
              }

            }
  • Verstehe ich nicht wirklich, was dein problem ist, aber du weißt, dass Java-arrays sind null-indiziert, richtig? In anderen Worten, die erste Ansicht wird index 0, das zweite index 1 etc etc
  • ya, die 1 bezieht sich hier auf Seite 2.
InformationsquelleAutor AroChin | 2015-03-18
Schreibe einen Kommentar