我試圖添加項目到適配器,因爲用戶滾動到列表的底部。我能夠做到這一點,但是我想將新項目添加到適配器並保留已經存在的項目,但是現在原始項目被刪除,只有新項目可見。有關我如何實現這一目標的任何想法?android notifyDataSetChanged()刪除列表中的原始數據
這是我的代碼看起來像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();
}
只是爲了clearify我在做什麼;一旦列表的底部可見,我開始一個AsyncTask獲取更多的視頻。在asynctask中,我將適配器設置爲一個事件的偵聽器,這個事件在asynctask完成時觸發 - 這是有效的。
onTaskFinished()上面的最後一個方法 - 在這裏,我將新項目添加到適配器用來填充每個列表項目的4個列表中,最後我通知適配器。
因此,新項目都添加好,問題是,在新的之前添加的項目,由於某種原因被刪除,或不再可見。
忘了補充一點,我已經驗證了該名單的長度確實增加,這意味着它同時包含原始數據和新加入的
任何想法?
[編輯]加入其中i適配器設置到ListView
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);
如果您的適配器未更新從getCount返回的值,則可能會出現這種情況。這有可能嗎? – 2012-03-20 16:48:12
@PhillipFitzsimmons它從getCount獲得的值是名爲「titles」的列表的長度,所以不要認爲這是問題。 – Line 2012-03-20 16:54:02
當您將適配器設置爲列表視圖,以及您的自定義適配器的簽名時發佈代碼... – 2012-03-20 17:36:20