リストの一番上に項目が動的に追加されるリストビューがあります。リストの上部に発生した最新のイベントをいくつか示します。問題は、これらのイベントが 1 秒間に 5 つのイベントなど、非常に頻繁に発生することです。これにより、リストが下がります。ユーザーが 1 つのイベントを見ているとします。新しいイベントが発生すると、下で読んでいたイベントがプッシュされ、それが消えます。新しいイベントを一番上に追加したいのですが、上にスクロールしたときにのみ表示する必要があります。新しいイベントが発生すると、アダプターで notifydatasetchanged を呼び出し、これによりリストが押し下げられます。とにかくスクロールをフリーズできますか。setTranscriptMode でスクロールを無効にしようとしました。しかし、それは役に立たないようです。ヒントを教えてください。
質問する
2522 次
2 に答える
5
あなたができることは、getFirstVisiblePosition()を使用して画面上の ListView の表示位置を取得し、取得した位置のsetSelection を使用してアダプターを再度設定することです。
int position = mListView.getFirstVisiblePosition();
mListView.setAdapter(adapter);
mListView.setSelection(position + 1);
リストに追加されたすべての単一のアイテムに対してリストの上にアイテムを追加しているため、(position + 1) が必要になると思います。
于 2012-07-13T09:47:18.480 に答える
0
必要に応じて最新のイベントを表示するには、設定する必要があります。android:transcriptMode="normal"
これにより、デフォルトで、データ セットが変更されるたびにフォーカスが最後の項目に設定されます。
http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:transcriptMode
また、スクロールをフリーズしたい場合は、その場合にsetOnScrollListener()
のみリストを設定および更新できます。
于 2012-07-13T10:47:09.267 に答える