사용자가 목록의 맨 아래로 스크롤 할 때 어댑터에 항목을 추가하려고합니다. 이 작업을 수행 할 수 있지만 어댑터에 새 항목을 추가하고 이미 있던 항목을 유지하려고하지만 원래 항목이 제거되고 새 항목 만 표시됩니다. 내가 어떻게 이것을 달성 할 수 있는지에 대한 아이디어가 있습니까?android notifyDataSetChanged()는 목록의 원본 데이터를 삭제합니다.
이 내 코드는 기압 모습입니다 :
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 개의 목록에 새 항목을 추가하고 마지막으로 어댑터에 알립니다.
새 항목이 모두 잘 추가되었으므로 새로운 항목이 추가되기 전의 항목이 제거되었거나 더 이상 표시되지 않는 것이 문제입니다.
은 원래의 데이터와 새로 추가 된
어떤 아이디어를 모두 포함 않는 의미, 나는이 목록의 길이가 증가한다는 것을 확인했다고 추가 잊어 버렸습니까?
[편집] 난 내 자신의 질문에 대답 목록보기
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에서 반환하는 값을 업데이트하지 않는 경우에 발생할 수 있습니다. 그럴 가능성이 있니? –
@PhillipFitzsimmons getCount에서 가져 오는 값은 "titles"라는 목록의 길이이므로 문제가 있다고 생각하지 마십시오. – Line
어댑터를 listview에 설정할 때의 포스트 코드 및 사용자 정의 어댑터의 서명 ... –