当用户滚动到列表底部时,我正在尝试将项目添加到适配器。我能够做到这一点,但是我想将新项目添加到适配器并保留已经存在的项目,但现在原始项目已被删除,只有新项目可见。关于如何实现这一目标的任何想法?
这就是我的代码在 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。在异步任务中,我将适配器设置为异步任务完成后触发的事件的侦听器 - 这有效。
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);