2013-09-04 13 views
5

Ich möchte meine Listenansicht durch Drücken der Tasten scrollen. Verwenden Sie zwei Tasten nach oben und nach unten und wenn ich die Taste nach oben drücken, sollte sich die Listenansicht eine Zeile nach oben bewegen und wenn ich die Taste nach unten drücke, sollte sich die Listenansicht eine Zeile nach unten bewegen.Scroll-Listenansicht mit Schaltflächen

Meine Listenansicht basiert auf this Link. Ich habe ein gutes Beispiel für scrollview here gefunden. Jetzt ist meine Frage anstelle von scrollview ich brauche meine Listview und es sollte um eine Zeile erhöhen/verringern. Wie neu bei Android jemand mir helfen, dieses Problem zu lösen. Danke im Voraus.

+0

Check [diese] (http://stackoverflow.com/questions/17205017/android-listview-thumb-scrollbar/17206022#17206022) ANDROID bietet Scrolling bar default für Listenansicht. – sarabu

+3

Niemals, nie ein ListView in einer Bildlaufansicht verschachteln !! – Skynet

+0

Ich brauche die ListView in Scrollview nicht. Was ich möchte, ist wie dieses Beispiel. Ich brauche meine Listenansicht, um durch Klicken auf Schaltflächen nach oben und unten zu gehen. – AndroidOptimist

Antwort

3

Sie können eine der folgenden versuchen:

Für eine direkte blättern:

getListView().setSelection(int); 

Für einen reibungslosen blättern:

getListView().smoothScrollToPosition(int); 

Beispielcode:

public View.OnClickListener onChk = new View.OnClickListener() { 
      public void onClick(View v) { 

       int index = list.getFirstVisiblePosition(); 
       getListView().smoothScrollToPosition(index+1); // For increment. 

} 
}); 

Sie müssen jedoch einen Fall behandeln, wenn nur die Hälfte oder ein Teil der Ansicht oben sichtbar ist.

+0

Ich brauche das Scrollen, indem ich auf die Schaltfläche klicke. (dh) das Drücken der Taste sollte eine Zeile nach oben scrollen. Ist meine Frage klar? – AndroidOptimist

+2

Ja, setze eines der obigen Snippets in den Button click listener. Das ist es! Sie müssen eine Variable inkrementieren und dekrementieren, die in die int-Position geht, diese Inkrementierung und Dekrementierung sollte beim Klicken auf die Schaltfläche erfolgen. – Skynet

+0

Entschuldigung für die späte Antwort. Ich habe Ihren obigen Code in Button als BTN.setOnClickListener (new View.OnClickListener() {@Override öffentliche void onClick (View arg0) {listView.setSelection (8);}}). Aber es funktioniert nicht – AndroidOptimist

2

Haben Sie sogar nach IDE-Vorschlägen gesucht? ;)

ListView lv = (ListView) findViewById(R.id.myListView); 

// to scroll to a given position 
lv.scrollTo(int x, int y); 

// to scroll by a given number of dp 
lv.scrollBy(int x, int y); 
+0

Hat jedes Element die gleiche Höhe? Und ist ihre Höhe von Hand oder manuell berechnet? – meeDamian

+0

Ich brauche die Ansichten, um durch Klicken auf die Schaltflächen zu scrollen. Normalerweise kann ich jetzt die Listenansicht scrollen. – AndroidOptimist

0

Rolle mit glatter Dauer

getListView().smoothScrollToPositionFromTop(position,offset,duration); 

Parameter Position -> Position zu scrollen

Offset ----> gewünschte Entfernung in Pixeln Position von der oben in der Ansicht Wenn der Bildlauf beendet ist

Dauer-> Anzahl der für die Bildlaufleiste zu verwendenden Millisekunden

Hinweis: Von API 11.

Verwandte Themen