Domanda

Come è possibile creare una setSelection (posizione) regolare per ListFragment. Per le normali visualizzazioni di elenchi è possibile chiamare smoothScrollToposition (posizione) ma questo funziona solo per API LVL 8 e oltre, ma questo non ha importanza perché non funziona per ListFragment e non fino a API LVL 7.

Qualsiasi idea, suggerimenti che aiuteranno a attuare questo è molto apprezzato.

È stato utile?

Soluzione

Mark D è corretto, se si desidera levigare il scorrimento del ListView in un ListFragment, devi chiamare getListView() sul ListFragment e poi chiama smoothScrollToPosition(int) sul ListView che viene restituito. Naturalmente, questo funziona solo al livello 8 API perché è quando smoothScrollToPosition(int) è stato introdotto a AbsListView, la superclasse di ListView.

Suppongo che potresti guardare il codice AbsListView.java per vedere cosa fa e provare a replicarlo nella tua sottoclasse di AbsListView o ListView. È immediatamente chiaro che smoothScrollToPosition(pos) chiama solo start(pos) su un'istanza di una classe interiore PositionScroller, ma sembra un po 'complicato replicare quel comportamento nella tua sottoclasse dal PositionScroller viene chiamato da molti altri punti come onDetachedFromWindow(), public void onWindowFocusChanged(boolean hasWindowFocus). Non è affatto chiaro per me come integreresti in modo pulito il comportamento di positionscroller nella tua sottoclasse in base alla versione API 7 di AbsListView.

Se fosse stata la mia decisione, con API 7 e precedente che rappresentano meno dell'8% dei dispositivi che accedono al mercato Android nelle ultime novità set di dati, Farei solo un potto e farei qualcosa di più semplice come setSelectionFromTop Ogni volta che l'API è inferiore a 8 (rilevata da build.version.sdk_int).

Altri suggerimenti

Non credo che tu possa farlo per API Livello 7, ma vedi se non riesci a levigare lo scorrimento andando così:

listFragment.getListView().smoothScrollToPosition(0);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top