参考资料:首先新建一个layout文件,命名为moredata.xml,包含一个Button和一个ProgressBar,xml代码如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/bt_load"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="加载更多数据"/><ProgressBarandroid:id="@+id/pg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:visibility="gone"/></LinearLayout>然后定义一个item.xml,其作用是定义ListView的每个item的视图,代码如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tv_title"android:textSize="20sp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"/><TextViewandroid:textSize="12sp"android:id="@+id/tv_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"/></LinearLayout>下面是主MainActivity.java代码:packagecn.llbb.testlistview2;importandroid.support.v7.app.ActionBarActivity;importjava.util.*;importandroid.os.Bundle;importandroid.os.Handler;importandroid.view.*;importandroid.view.View.*;importandroid.widget.*;importandroid.widget.AbsListView.OnScrollListener;publicclassMainActivityextendsActionBarActivityimplementsOnScrollListener{privateListViewlist=null;privateSimpleAdaptermSimpleAdapter;privateButtonbt;privateProgressBarpg;privateHandlerhandler;privateArrayList<HashMap<String,String>>listitem;privateViewmoreView;privateintMaxDateNum;privateintlastVisibleIndex;protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);list=(ListView)findViewById(R.id.listView1);MaxDateNum=65;listitem=newArrayList<HashMap<String,String>>();moreView=getLayoutInflater().inflate(R.layout.moredata,null);bt=(Button)moreView.findViewById(R.id.bt_load);pg=(ProgressBar)moreView.findViewById(R.id.pg);handler=newHandler();listitem=newArrayList<HashMap<String,String>>();for(inti=0;i<10;i++){HashMap<String,String>item=newHashMap<String,String>();item.put("ItemTitle","第"+i+"行标题");item.put("ItemText","第"+i+"行内容");listitem.add(item);}mSimpleAdapter=newSimpleAdapter(this,listitem,R.layout.item,newString[]{"ItemTitle","ItemText"},newint[]{R.id.tv_title,R.id.tv_content});list.addFooterView(moreView);list.setAdapter(mSimpleAdapter);bt.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){pg.setVisibility(View.VISIBLE);bt.setVisibility(View.GONE);handler.postDelayed(newRunnable(){@Overridepublicvoidrun(){loadMoreDate();//加载更多数据bt.setVisibility(View.VISIBLE);pg.setVisibility(View.GONE);mSimpleAdapter.notifyDataSetChanged();//通知listView刷新数据}},2000);}});}privatevoidloadMoreDate(){intcount=mSimpleAdapter.getCount();if(count+5<MaxDateNum){//每次加载5条for(inti=count;i<count+5;i++){HashMap<String,String>map=newHashMap<String,String>();map.put("ItemTitle","新增第"+i+"行标题");map.put("ItemText","新增第"+i+"行内容");listitem.add(map);}}else{//数据已经不足5条for(inti=count;i<MaxDateNum;i++){HashMap<String,String>map=newHashMap<String,String>();map.put("ItemTitle","新增第"+i+"行标题");map.put("ItemText","新增第"+i+"行内容");listitem.add(map);}}}publicvoidonScroll(AbsListViewview,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount){lastVisibleIndex=firstVisibleItem+visibleItemCount-1;if(totalItemCount==MaxDateNum+1){list.removeFooterView(moreView);Toast.makeText(this,"数据全部加载完成,没有更多数据!",Toast.LENGTH_LONG).show();}}@OverridepublicvoidonScrollStateChanged(AbsListViewview,intscrollState){if(scrollState==OnScrollListener.SCROLL_STATE_IDLE&&lastVisibleIndex==mSimpleAdapter.getCount()){}}}