2

ListViewに新しいアイテムを追加して の上部に表示するのに苦労していListViewます。ただし、新しいアイテムがに追加されるとListView、現在のアイテムが表示されたままになり、新しいアイテムがその上に追加されます。

その趣旨で、私はここから解決策に従いました: https://stackoverflow.com/a/3035521/450534そしてそれもうまくいかなかったとき、私は少し実験を始めました.

また、言及する価値があるのは、Chris Banes による Pull to Refresh ライブラリを使用していることです。

不思議なことに、pagedの最後の項目の下にデータを追加するとListView、すべてうまくいきます。しかし、なぜ新しいアイテムが現在のアイテムの上に配置されず、現在の位置を維持しないのか、私は困惑しています。これは私がこれまでに行ったことです( でonPostExecute()):

// GET THE CURRENT LISTVIEW POSITION (USED TO MAINTAIN SCROLL POSITION)
int currentPosition = actualListView.getFirstVisiblePosition();
Log.e("POSITION", String.valueOf(currentPosition));

View v = actualListView.getChildAt(0);

int top = (v == null) ? 0 : v.getTop();
Log.e("TOP", String.valueOf(top));

/*****  APPEND NEW DATA TO THE ADAPTER AND THE LISTVIEW     *****/
// CAST THE ADAPTER (AGAIN)
adapter = new NewsFeedAdapter(getActivity(), arrFeeds);

// SET THE ADAPTER TO THE LISTVIEW
actualListView.setAdapter(adapter);

// SET THE SCROLL POSITION
actualListView.setSelectionFromTop(currentPosition, top);

lv.onRefreshComplete();

これは の始まりであり、ListView新しいアイテムを上部 (この上) に追加した後も表示されるはずです。上にいくつの新しいフィードがあるかを示す小さなレイアウトを表示する予定です。Facebookアプリのような何かが現在行われています。

ListView の開始

ただし、新しいアイテムは、ListView既存のアイテムの上ではなく、下に追加されます。

ListView の下部に新しい項目が追加されます

私が見逃した明らかなものはありますか?さらにコードを追加する必要がある場合は、お知らせください。すぐに追加します。

4

1 に答える 1

3

別の代替手段は、アダプターを設定するために使用している ArrayList の 0 ポイシトンに項目を追加することです。

  your_array_list.add(int index, Object element) //Inserts the specified element at the specified position in this list.

追加した後、listAdapter で notifyDataSetChanged() を呼び出すことができます。

それが動作するかどうかを確認してください..

于 2013-03-17T09:44:46.280 に答える