onScroll wird aufgerufen, wenn ich listView.onScrollListener (this) setze, aber ohne Berührung
Wenn ich die onScrollListener
für meine ListView
ruft es onScroll
. Dies verursacht einen Absturz, weil bestimmte Dinge noch nicht initialisiert wurde.
Ist das normal? Hinweis: dies ist geschehen, ohne mich auch nur zu berühren Sie das Telefon.
public class MainActivity1 extends Activity implements OnClickListener, OnScrollListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1);
ListView lv = (ListView)findViewById(R.id.listview1);
lv.setOnScrollListener(this);
...
}
...
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount){
if( firstVisibleItem+visibleItemCount == totalItemCount ){
pullContactList();
}
}
Kommentar zu dem Problem
es ist etwas falsch . oncreate ist die erste Methode, die aufgerufen wird, aus einer Tätigkeit
mein schlechtes, es wird tatsächlich aufgerufen wird, wenn der onCreate-Anrufe setOnScrollListner. ist das normal?
was noch nicht initialisiert wurde? Das Zeug in pullContactList()?
Ja. Und auch meinen adapter. Ich weiß, ich kann anrufen setonscrolllistner am Ende meiner oncreate. Oder verwenden Sie eine variable in onscroll zu überspringen, deren Inhalt auf den ersten Aufruf an. Aber diese sind alle patches. Gibt es eine Möglichkeit zu zwingen, setonscrolllistner nicht aufrufen onscroll? Muss ich die Fahrt über den Konstruktor?
Am besten ein stackoverflow.com/a/6357973/1318946
InformationsquelleAutor der Frage Siavash | 2013-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es normal, da der Quellcode für
setOnScrollListener
imAbsListView
(die SuperklasseListView
) bedeutet dies:sowie
invokeOnItemScrollListener
tut:je nachdem, was es ist Sie versuchen zu tun, es gibt eine Reihe von Möglichkeiten, um dieses problem zu vermeiden.
EDIT:
Da Sie nur wollen, um dies zu tun, wenn der Benutzer tatsächlich gescrollt, ich nehme an, man könnte etwas machen wie:
Dann..
InformationsquelleAutor der Antwort LuxuryMode
Nur zur Erinnerung, nach der javadoc von
Daher
motionEvent.getAction()
nie wird das SCROLL-Ereignis. Überprüfen Sie für den job machenKönnen Sie auch tun, die ähnliche Sache in den
onScrollStateChanged
Methode derOnScrollListener
InformationsquelleAutor der Antwort
Ich diese Lösung verwenden und es funktioniert gut für mich :
InformationsquelleAutor der Antwort Farzad Farazmand
Können Sie tun das nötige Aufgabe nur, wenn visibleItemCount > 0;
InformationsquelleAutor der Antwort Varun Bhatia
Arbeitete Lösung für mich!!! Kombination der oben genannten Antwort, ich habe die Lösung!!!!
Dank @LuxuryMode und @CrazyGreenHand
Meine TouchListener:
seit dem MotionEvent.ACTION_SCROLL nicht auslöste, die ich verwendet MOVE-Aktion
Mein Scroll-Listener:
InformationsquelleAutor der Antwort prasanthMurugan