Ich versuche, auf die angegebene Seite in viewPager zu verschieben.Android ViewPager setCurrentItem lädt die angeforderte Seite nicht
Mein Code ist -
if(isFirstCall) {
mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager(), pageId);
mPager.setAdapter(mPagerAdapter);
}
new Handler().post(new Runnable() {
@Override
public void run() {
mPager.setCurrentItem(currentPagePosition);
}
});
mPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
private static final float thresholdOffset = 0.5f;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
if (checkDirection) {
mPager.setPagingEnabled(false);
if (thresholdOffset > positionOffset) {
checkDirection = false;
// Call service to get next page position
} else {
checkDirection = false;
// Call service to get prev page position
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
if ((scrollStarted == false) && (state == ViewPager.SCROLL_STATE_DRAGGING)) {
scrollStarted = true;
checkDirection = true;
} else {
scrollStarted = false;
}
}
@Override
public void onPageSelected(int position) {
}
});
Wenn ich versuche, die currentPagePosition Variable zu aktualisieren, die viewPager hängt und bewegt sich nicht auf die angegebene Seite sofort. (Es wird beobachtet, dass nach ungefähr 10-15 Minuten die angegebene Seite aufgerufen wird.)
Während, wenn ich den Wert der Variable currentPagePosition nicht verändere, funktioniert alles gut (aber es bewegt sich auf eine andere Seite als ich einen falschen Wert erhalten).
Ich kann nicht verstehen, was falsch läuft.
Bitte helfen ..
Beobachtung -
Meine Beobachtung ist, dass - onPageScrollStateChanged Methode nicht mit state = 1 was zum Ausfall der Bedingung in onPageScrolled aufgerufen. Also die nächste Seite wird nicht aufgerufen. Ich habe keine Ahnung, warum onPageScrollStateChanged nicht für den Status 'SCROLL_STATE_DRAGGING' aufgerufen wird.
Das hat nicht geholfen. –
hast du notifyDataSetChanged() –
aufgerufen Ich bekomme die Seitenliste vom Server nach der nächsten/vorherigen Seite Folie. Ich habe notifyDataSetChanged() nicht aufgerufen, weil mein Datenarray global ist und sobald ich die Antwort vom Server bekomme, wird das Array modifiziert. –