要第一次仅显示10个项目
ListView并滚动显示更多项目,请执行以下步骤:
步骤1: 创建一种
chunkList方法,将
ArrayList大小分成10个部分:
static <T> List<ArrayList<T>> chunkList(List<T> list, final int L) { List<ArrayList<T>> parts = new ArrayList<ArrayList<T>>(); final int N = list.size(); for (int i = 0; i < N; i += L) { parts.add(new ArrayList<T>( list.subList(i, Math.min(N, i + L))) ); } return parts; }第2步: 创建
ArrayList一个计数器并显示当前零件:
private boolean isLoadingMore=false; Handler mHandler = new Handler(); List<ArrayList<HashMap<String,String>>> mainArrayList; private int count=0;
步骤3: 在
onPostExecute突破
result中ListView和显示数据:
protected void onPostExecute(ArrayList<HashMap<String,String>> result) { super.onPostExecute(result); // your pre here... mainArrayList=chunkList(result,10); isLoadingMore=false; count=0; adapter = new CustomAdapterSent(Interestsent.this, mainArrayList.get(count)); setListAdapter(adapter); } }步骤4: 在Adapter中创建addAll方法以将数据追加到当前数据源中:
public void addAll(ArrayList<HashMap<String,String>> moreData){ this.listData.addAll(moreData); this.notifyDataSetChanged();}步骤5: 在
onLoadMoreListView中加载更多数据:
mHandler = new Handler(); listview.setonScrollListener(new EndlessScrollListener() { @Override public void onLoadMore(int page, int totalItemsCount) { if(count<mainArrayList.size()-1) { if(adapter !=null){ count++; if(!isLoadingMore){ isLoadingMore=true; mHandler.postDelayed(loadMoreRunnable,1000); } } } } }); } Runnable loadMoreRunnable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub if(count<mainArrayList.size()) { if(adapter !=null){count++; adapter.addAll(mainArrayList.get(count));mHandler.removeCallbacks(loadMoreRunnable);isLoadingMore=false;} } } };


