我想制作一个列表视图,当用户滚动到列表视图的底部时,其他列表项自动从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;
}
这样做的正确方法是这样,还是有任何好办法吗?
答案 0 :(得分:1)
由于您使用的是getGroupView
,我假设您使用的是ExpandableListView
,而不是常规ListView
,这可能会在您的问题中说明。
无论哪种方式,执行此操作的最佳方法是将OnScrollListener
分配到您的列表中,然后在那里进行检查,而不是getGroupView
。
我建议您在onScroll
方法中添加以下内容:
if (firstVisibleItem + visibleItemCount > (totalItemCount - NUM_BEFORE_LOAD)) {
loadMore()
}
根据您的示例NUM_BEFORE_LOAD
,其中{{1}}为1,但是您可以将列表加载的任何内容加载到比底部更快的位置。