Endless ListView不会向下滚动

时间:2015-12-08 14:36:36

标签: android performance android-layout listview android-listview

大家好我试图从这个网站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();
            }               
        }
    });

1 个答案:

答案 0 :(得分:1)

这很可能是你的问题:

            new LoadDataFromServer().execute(strStartCount, strEndCount);
            adapter.notifyDataSetChanged();

如果

    new LoadDataFromServer()            

是一个AsyncTask,你应该在onPostExecute方法中使用notifyDataSetChanged。

目前,您在启动任务后(以及加载新数据之前)直接通知。在再次滚动之前,您将看不到新数据,并再次调用notifydatasetchanged。

相关问题