ユーザーがリストの一番下までスクロールするときに、アダプターにアイテムを追加しようとしています。これは可能ですが、新しいアイテムをアダプターに追加して、すでに存在していたアイテムを保持したいのですが、現在は元のアイテムが削除され、新しいアイテムのみが表示されます。これをどのように達成できるかについてのアイデアはありますか?
これは私のコードがatmのように見えるものです:
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (loading) {
if (totalItemCount > previousTotal) {
previousTotal = totalItemCount;
loading = false;
previousTotal = totalItemCount;
currentPage++;
}
}
if (!loading
&& ((firstVisibleItem + visibleItemCount) >= totalItemCount)) {
if (fragmentMode == 5) {
ActiveUser.getInstance().FetchVidPage(currentPage, chanID,
activity, this);
loading = true;
}
}
}
@Override
public void onTaskFinished() {
titles.addAll(ActiveUser.getInstance().getWebVidInfo(1));
thumbs.addAll(ActiveUser.getInstance().getWebVidInfo(2));
data.addAll(ActiveUser.getInstance().getWebVidInfo(3));
describtions.addAll(ActiveUser.getInstance().getWebVidInfo(4));
vidOwnerIDs.addAll(ActiveUser.getInstance().getWebVidInfo(4));
notifyDataSetChanged();
}
私がしていることを明確にするためだけに。リストの一番下が表示されたら、さらにビデオをフェッチするAsyncTaskを開始します。asynctaskで、asynctaskが終了すると発生するイベントのリスナーとしてアダプターを設定しました。これは機能します。
onTaskFinished()上記の最後のメソッド-ここでは、アダプターが各リスト項目に入力するために使用する4つのリストに新しい項目を追加し、最後にアダプターに通知します。
したがって、新しいアイテムはすべて正常に追加されます。問題は、新しいアイテムが追加される前にあったアイテムが、何らかの理由で削除されるか、表示されなくなることです。
リストの長さが長くなることを確認したことを追加するのを忘れました。つまり、元のデータと新しく追加されたデータの両方が含まれています。
何か案は?
[編集]アダプタをリストビューに設定した場所のコードを追加する
adapter = new LazyAdapter(getActivity(), ActiveUser.getInstance()
.getWebVidInfo(3),
ActiveUser.getInstance().getWebVidInfo(1), ActiveUser.getInstance()
.getWebVidInfo(2),
ActiveUser.getInstance().getWebVidInfo(5), ActiveUser.getInstance()
.getWebVidInfo(4), CHAN_ID, FRAGMENT_MODE);
listing.setAdapter(adapter);
listing.setOnScrollListener(adapter);