Ik wil er zeker van zijn dat de lijst helemaal naar beneden wordt gescrold, nadat ik de lijstweergave heb bijgewerkt met listAdapter, zodat het het laatste element dat in de lijst is ingevoerd, wordt weergegeven. Hoe kan ik dit doen?
Ik heb dit geprobeerd, maar geen geluk:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
dank je
Antwoord 1, autoriteit 100%
Stel dat u weet wanneer de lijstgegevens zijn gewijzigd, dan kunt u de lijst handmatig laten scrollen naar beneden door de lijstselectie op de laatste rij in te stellen. Iets als:
private void scrollMyListViewToBottom() {
myListView.post(new Runnable() {
@Override
public void run() {
// Select the last row so it will scroll into view...
myListView.setSelection(myListAdapter.getCount() - 1);
}
});
}
Antwoord 2, autoriteit 56%
U moet deze parameters gebruiken in uw lijstweergave:
-
Scrollen
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
-
Zet de kop van de lijst onderaan
lv.setStackFromBottom(true);
U kunt deze parameters ook in XML instellen, bijv. zoals dit:
<ListView
...
android:transcriptMode="alwaysScroll"
android:stackFromBottom="true" />
Antwoord 3, autoriteit 9%
Een combinatie van TRANSCRIPT_MODE_ALWAYS_SCROLL en setSelection zorgde ervoor dat het voor mij werkte
ChatAdapter adapter = new ChatAdapter(this);
ListView lv = (ListView) findViewById(R.id.chatList);
lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
lv.setAdapter(adapter);
adapter.registerDataSetObserver(new DataSetObserver() {
@Override
public void onChanged() {
super.onChanged();
lv.setSelection(adapter.getCount() - 1);
}
});
Antwoord 4, autoriteit 7%
Ik heb dit succesvol gebruikt als reactie op een klik op een knop, dus ik denk dat u het ook kunt gebruiken nadat u uw inhoud heeft bijgewerkt:
myListView.smoothScrollToPosition(theListAdapter.getCount() -1);
Antwoord 5, autoriteit 3%
Om dit in een ListFragment te krijgen:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
getListView().setStackFromBottom(true);`
Dit antwoord toegevoegd, want als iemand op Google zoekt naar hetzelfde probleem met ListFragment, vindt hij dit gewoon..
Met vriendelijke groeten
Antwoord 6, autoriteit 2%
Gebruik:
Zet de kop van de lijst onderaan lv.setStackFromBottom(true);
Werkt voor mij en de lijst wordt automatisch naar beneden gescrold wanneer deze voor het eerst zichtbaar wordt. De lijst scrollt dan zoals het hoort met TRANSCRIPT_MODE_ALWAYS_SCROLL
.
Antwoord 7
Ik gebruik
setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
om items onderaan toe te voegen, en oudere items scroll naar boven, zoals een chattranscript
Antwoord 8
De eenvoudigste oplossing is:
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setStackFromBottom(true);
Antwoord 9
De transcriptiemodus is wat je wilt en wordt gebruikt door Google Talk en de sms/mms-applicatie. Roep je notificatiesDatasetChanged() correct aan op je adapter wanneer je items toevoegt?