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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es scheint, nicht die instantiateItem() problem. Ich bekomme meine aktuelle Ansicht von setPrimaryItem().
Brauchen Sie nicht zu verwenden, Blick auf array-Liste:
und in der onClick-Methode: