2011-11-23 18 views
7

Chcę dotknąć kontrolkę na ekranie i przewijanie ListView do momentu, aż dany wiersz znajdzie się w górnej części ekranu, co jest bardzo łatwe w iOS.smoothScrollToPositionFromTop dla Froyo ListView?

Znalazłem taką metodę w API: http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPositionFromTop(int, int) Jest to jednak dla API Level 11, Honeycomb. Oznacza to, że telefony nie mogą go używać do czasu Ice Cream Sandwich, a będzie to długi, długi czas, dopóki nie będzie praktyczne ustawienie Ice Cream Sandwich jako minimalnego wymogu uruchamiania aplikacji.

Czy istnieje sposób na uzyskanie tej samej funkcjonalności w Froyo?

Odpowiedz

4

Zastosowanie

setSelection (int position) 
+0

Wiesz, bym przysiągł Próbowałem tego i go nie przewijałem listy. Lo i oto, przeskakuje listę z właściwym wierszem na górze ekranu, co jest świetne! Jestem zaniepokojony potencjalnymi niepożądanymi efektami ubocznymi tego podejścia, ponieważ nie był on przeznaczony do tego celu, a miło byłoby mieć gładki zwój zamiast nagłego skoku ... więc nadal akceptuję odpowiedzi, jeśli ktoś ma lepsze rozwiązanie. Dzięki za szybką odpowiedź, gwa, w razie potrzeby powrócę do tego. :) –

+0

Bez problemu Chad! Używam go w mojej aplikacji i jak dotąd działało całkiem dobrze. Daj mi znać, jeśli znajdziesz coś lepszego. Dzięki! – gwa

12

Poniższy kod nie jest doskonały, ale to działa w wielu przypadkach:

if (android.os.Build.VERSION.SDK_INT >= 11) 
{ 
    listView.smoothScrollToPositionFromTop(p, 0); 
} 
else if (android.os.Build.VERSION.SDK_INT >= 8) 
{ 
    int firstVisible = listView.getFirstVisiblePosition(); 
    int lastVisible = listView.getLastVisiblePosition(); 
    if (p < firstVisible) 
     listView.smoothScrollToPosition(p); 
    else 
     listView.smoothScrollToPosition(p + lastVisible - firstVisible - 2); 
} 
else 
{ 
    listView.setSelectionFromTop(p, 0); 
} 

+0

Należy zauważyć, że '' smoothScrollToPositionFromTop() '' ma znany błąd. Zobacz http://stackoverflow.com/questions/14479078/smoothscrolltopositionfromtop-is-not-always-working-like-it-should/#20997828 dla problemu i rozwiązania. –

Powiązane problemy