如何在用户向下滚动时更新listview?

时间:2013-09-25 17:21:39

标签: android listview android-listview

我想制作一个列表视图,当用户滚动到列表视图的底部时,其他列表项自动从Internet填充。我在该可扩展列表视图的适配器中编写了代码(在getGroupView()方法中),就像这样,

public View getGroupView(final int arg0, final boolean arg1, View arg2, ViewGroup arg3) {
    //if(arg2==null){
        //arg2=act.getLayoutInflater().inflate(R.layout.layout_exlistview_group, null);         
    }
    //((TextView)arg2.findViewById(R.id.nameText)).setText(item.getItemName());

    if(arg0>=getGroupCount()-1){//chech is near for end
        /*here i run a asynctask to download data and add items to SparseArray of this class.That sparsearray is the source to the adapter to view them in listview*/ 
    }

    //return arg2;
}

这样做的正确方法是这样,还是有任何好办法吗?

1 个答案:

答案 0 :(得分:1)

由于您使用的是getGroupView,我假设您使用的是ExpandableListView,而不是常规ListView,这可能会在您的问题中说明。

无论哪种方式,执行此操作的最佳方法是将OnScrollListener分配到您的列表中,然后在那里进行检查,而不是getGroupView

我建议您在onScroll方法中添加以下内容:

if (firstVisibleItem + visibleItemCount > (totalItemCount - NUM_BEFORE_LOAD)) {
    loadMore()
}

根据您的示例NUM_BEFORE_LOAD,其中{{1}}为1,但是您可以将列表加载的任何内容加载到比底部更快的位置。