项目结构如图所示:

项目主要包括一个activity和三个xml页面布局,代码如下:

MainActivity.java

        
  1. packagecom.android.ray.activity;
  2. importandroid.app.ListActivity;
  3. importandroid.os.Bundle;
  4. importandroid.os.Handler;
  5. importandroid.view.LayoutInflater;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.AbsListView;
  9. importandroid.widget.BaseAdapter;
  10. importandroid.widget.Button;
  11. importandroid.widget.LinearLayout;
  12. importandroid.widget.ListView;
  13. importandroid.widget.TextView;
  14. importandroid.widget.AbsListView.OnScrollListener;
  15. publicclassMainActivityextendsListActivityimplementsOnScrollListener{
  16. privateListViewlistView;
  17. //全局变量,用来记录ScrollView的滚动状态,1表示开始滚动,2表示正在滚动,0表示停止滚动
  18. privateintscrollState;
  19. //可加载记录的条数
  20. privateintcount=100;
  21. privateintlastItem;
  22. //当前可见页面中的Item总数
  23. privateintvisibleItemCount;
  24. privateButtonfooterButton;
  25. privateLinearLayoutfooterProgressBarLayout;
  26. privateViewview;
  27. privateListAdaptermAdapter=newListAdapter();
  28. publicvoidonCreate(BundlesavedInstanceState){
  29. super.onCreate(savedInstanceState);
  30. //加载主页面布局
  31. setContentView(R.layout.main);
  32. LayoutInflaterinflater=LayoutInflater.from(this);
  33. //加载底部布局
  34. view=inflater.inflate(R.layout.main_more,null);
  35. footerButton=(Button)view.findViewById(R.id.button);
  36. footerProgressBarLayout=(LinearLayout)view.findViewById(R.id.linearlayout);
  37. footerProgressBarLayout.setVisibility(View.GONE);
  38. //更多按钮点击事件
  39. footerButton.setOnClickListener(newView.OnClickListener(){
  40. publicvoidonClick(Viewv){
  41. if(lastItem==mAdapter.count&&scrollState==OnScrollListener.SCROLL_STATE_IDLE){
  42. //设置页面底部布局控件可见性
  43. footerButton.setVisibility(View.GONE);
  44. footerProgressBarLayout.setVisibility(View.VISIBLE);
  45. if(mAdapter.count<=count){
  46. //使用Handler动态加载数据
  47. newHandler().postDelayed(newRunnable(){
  48. publicvoidrun(){
  49. mAdapter.count+=10;
  50. mAdapter.notifyDataSetChanged();
  51. listView.setSelection(lastItem-visibleItemCount+1);
  52. //获取数据成功设置Layout不可见,Button设为可见
  53. footerButton.setVisibility(View.VISIBLE);
  54. footerProgressBarLayout.setVisibility(View.GONE);
  55. }
  56. },2000);
  57. }
  58. }
  59. }
  60. });
  61. listView=getListView();
  62. //将布局添加到ListView的Footer中
  63. listView.addFooterView(view);
  64. listView.setAdapter(mAdapter);
  65. //设置滑动监听
  66. listView.setOnScrollListener(this);
  67. }
  68. publicvoidonScroll(AbsListViewview,intfirstVisibleItem,
  69. intvisibleItemCount,inttotalItemCount){
  70. this.visibleItemCount=visibleItemCount;
  71. lastItem=firstVisibleItem+visibleItemCount-1;
  72. if(mAdapter.count>=count){
  73. listView.removeFooterView(view);
  74. }
  75. //booleanloadMore=firstVisibleItem+visibleItemCount>=totalItemCount;
  76. //if(loadMore){
  77. //mAdapter.count+=visibleItemCount;
  78. //mAdapter.notifyDataSetChanged();
  79. //}
  80. }
  81. publicvoidonScrollStateChanged(AbsListViewview,intscrollState){
  82. this.scrollState=scrollState;
  83. }
  84. /**
  85. *数据匹配器
  86. *@authorqin_lei
  87. *
  88. */
  89. publicclassListAdapterextendsBaseAdapter{
  90. intcount=10;
  91. publicintgetCount(){
  92. returncount;
  93. }
  94. publicObjectgetItem(intposition){
  95. returnposition;
  96. }
  97. publiclonggetItemId(intposition){
  98. returnposition;
  99. }
  100. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  101. LayoutInflaterinflater=LayoutInflater.from(MainActivity.this);
  102. Viewview=inflater.inflate(R.layout.main_item,null);
  103. TextViewtv=(TextView)view.findViewById(R.id.tv);
  104. tv.setText("Hello"+position);
  105. returnview;
  106. }
  107. }
  108. }

主要布局文件代码如下:

main.xml

        
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <ListView
  7. android:id="@android:id/list"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"/>
  10. </LinearLayout>

main_more.xml

        
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <Button
  7. android:id="@+id/button"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="更多"/>
  11. <LinearLayout
  12. android:orientation="horizontal"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:gravity="center"
  16. android:id="@+id/linearlayout">
  17. <ProgressBar
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"/>
  20. <TextView
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:text="正在获取..."/>
  24. </LinearLayout>
  25. </LinearLayout>

ListView单个显示item布局main_item.xml

        
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="horizontal"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <ImageView
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:scaleType="fitXY"
  10. android:src="@drawable/icon_head"/>
  11. <TextView
  12. android:id="@+id/tv"
  13. android:layout_width="fill_parent"
  14. android:layout_height="20dp"
  15. android:text="@string/hello"/>
  16. </LinearLayout>

项目运行结果如下图:

点击更多,十条,依次类推:

本文出自 “RayChin” 博客,谢绝转载!

更多相关文章

  1. 布局(2、相对布局)
  2. android 设置布局为无标题样式
  3. Android 解决布局问题
  4. android卡片布局CardView
  5. AndroidのUI布局之layout weight
  6. Android中WebView如何加载JavaScript脚本
  7. Android预制APP第一次打开时不弹权限提示页面
  8. Android 异步任务加载图片代码
  9. Android_布局属性大全

随机推荐

  1. Android视图篇之一:Android常见基本布局
  2. Android应用开发相关下载资源(2013/03/22
  3. Android新增音频流类型
  4. Android error: Failed to install *.apk
  5. Android的Notification研究
  6. Android(总结):控件居中|水平居中|垂直居中
  7. Android UI设计系统-android selector 开
  8. 欢迎下载科幻世界iPhone、iPad、Android
  9. android控件属性
  10. Android 用户界面