大家好我试图从这个网站Endless list实现Endless列表视图。我使用这个Endless listview从服务器为每次命中加载30条记录。我得到30条记录并在arraylist中添加了记录。 问题是,当我尝试向下滚动列表视图时,它没有加载新的30条记录。但是当我尝试向上滚动列表视图正在加载时,新添加了30条记录到listview.Agin之后,当我滚动下一个30条记录后,当我达到第60条记录后,向下滚动工作。但是请求发送,我从服务器获得30条记录,我添加到我的数组列表。当我向上滚动下一个30条记录并显示在列表视图中。当我向下滚动时,我应该得到30条记录。我花了超过2天仍然无法弄明白。任何人都可以告诉我哪里被阻止。谢谢提前。< / p>
str = "coune me in"
var obj = {};
var regex = /[\s]/gi
function count(str){
// total spaces in a string
var spacesCount = str.match(regex).length;
// words count
var wordsCount = str.split(' ').length;
//charetcers count
var charsCount = str.split('').join('').length;
//average count
var avgCount = str.split(' ').join('').length/wordsCount;
// adding it to the object
obj.words = wordsCount;
obj.chars = charsCount;
obj.avgLength = avgCount;
obj.spaces = spacesCount;
return obj
}
count(str)
//类LoadDataFromServer
list_Order.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if(intPreviousFirstVisibleItem==firstVisibleItem)
return;
intPreviousFirstVisibleItem=firstVisibleItem;
int lastIndexInScreen = visibleItemCount + firstVisibleItem;
if (lastIndexInScreen>= totalItemCount && !isLoading)
{
intStartCount=intEndCount+1;
intEndCount=intStartCount+29;
strStartCount=Integer.toString(intStartCount);
strEndCount=Integer.toString(intEndCount);
new LoadDataFromServer().execute(strStartCount, strEndCount);
adapter.notifyDataSetChanged();
}
}
});
答案 0 :(得分:1)
这很可能是你的问题:
new LoadDataFromServer().execute(strStartCount, strEndCount);
adapter.notifyDataSetChanged();
如果
new LoadDataFromServer()
是一个AsyncTask,你应该在onPostExecute方法中使用notifyDataSetChanged。
目前,您在启动任务后(以及加载新数据之前)直接通知。在再次滚动之前,您将看不到新数据,并再次调用notifydatasetchanged。