`

ListView分页

 
阅读更多
  1. packagehbq.android.myapp.listview;
  2. importandroid.app.ListActivity;
  3. importandroid.os.Bundle;
  4. importandroid.util.Log;
  5. importandroid.view.Gravity;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.AbsListView;
  9. importandroid.widget.BaseAdapter;
  10. importandroid.widget.LinearLayout;
  11. importandroid.widget.ListView;
  12. importandroid.widget.ProgressBar;
  13. importandroid.widget.TextView;
  14. importandroid.widget.Toast;
  15. importandroid.widget.AbsListView.OnScrollListener;
  16. importandroid.widget.LinearLayout.LayoutParams;
  17. publicclassMainActivityextendsListActivityimplementsOnScrollListener{
  18. privatestaticfinalStringTAG="MainActivity";
  19. privateListViewAdapteradapter=newListViewAdapter();
  20. ListViewlistView;
  21. privateintlastItem=0;
  22. LinearLayoutloadingLayout;
  23. /**
  24. *设置布局显示属性
  25. */
  26. privateLayoutParamsmLayoutParams=newLinearLayout.LayoutParams(
  27. LinearLayout.LayoutParams.WRAP_CONTENT,
  28. LinearLayout.LayoutParams.WRAP_CONTENT);
  29. /**
  30. *设置布局显示目标最大化属性
  31. */
  32. privateLayoutParamsFFlayoutParams=newLinearLayout.LayoutParams(
  33. LinearLayout.LayoutParams.FILL_PARENT,
  34. LinearLayout.LayoutParams.FILL_PARENT);
  35. privateProgressBarprogressBar;
  36. @Override
  37. protectedvoidonCreate(BundlesavedInstanceState){
  38. super.onCreate(savedInstanceState);
  39. Log.i(TAG,"onCreate(BundlesavedInstanceState)>>>>>>>>>>>>>>>");
  40. //线性布局
  41. LinearLayoutlayout=newLinearLayout(this);
  42. //设置布局水平方向
  43. layout.setOrientation(LinearLayout.HORIZONTAL);
  44. //进度条
  45. progressBar=newProgressBar(this);
  46. //进度条显示位置
  47. progressBar.setPadding(0,0,15,0);
  48. //把进度条加入到layout中
  49. layout.addView(progressBar,mLayoutParams);
  50. //文本内容
  51. TextViewtextView=newTextView(this);
  52. textView.setText("加载中...");
  53. textView.setGravity(Gravity.CENTER_VERTICAL);
  54. //把文本加入到layout中
  55. layout.addView(textView,FFlayoutParams);
  56. //设置layout的重力方向,即对齐方式是
  57. layout.setGravity(Gravity.CENTER);
  58. //设置ListView的页脚layout
  59. loadingLayout=newLinearLayout(this);
  60. loadingLayout.addView(layout,mLayoutParams);
  61. loadingLayout.setGravity(Gravity.CENTER);
  62. //得到一个ListView用来显示条目
  63. listView=getListView();
  64. //添加到脚页显示
  65. listView.addFooterView(loadingLayout);
  66. //给ListView添加适配器
  67. setListAdapter(adapter);
  68. //给ListView注册滚动监听
  69. listView.setOnScrollListener(this);
  70. }
  71. @Override
  72. publicvoidonScroll(AbsListViewv,intfirstVisibleItem,
  73. intvisibleItemCount,inttotalItemCount){
  74. Log.i(TAG,"Scroll>>>first:"+firstVisibleItem+",visible:"
  75. +visibleItemCount+",total:"+totalItemCount);
  76. lastItem=firstVisibleItem+visibleItemCount-1;
  77. Log.i(TAG,"Scroll>>>lastItem:"+lastItem);
  78. //显示50条ListItem,即0-49,因为onScroll是在“滑动”执行过之后才触发,所以用adapter.count<=41作条件
  79. if(adapter.count<=41){
  80. if(firstVisibleItem+visibleItemCount==totalItemCount){
  81. adapter.count+=10;
  82. adapter.notifyDataSetChanged();
  83. listView.setSelection(lastItem);
  84. intcurrentPage=adapter.count/10;
  85. Toast.makeText(getApplicationContext(),
  86. "第"+currentPage+"页",Toast.LENGTH_LONG).show();
  87. }
  88. }else{
  89. listView.removeFooterView(loadingLayout);
  90. }
  91. }
  92. @Override
  93. publicvoidonScrollStateChanged(AbsListViewv,intstate){
  94. if(lastItem==adapter.count
  95. &&state==OnScrollListener.SCROLL_STATE_IDLE){
  96. Log.i(TAG,"ScrollStateChanged>>>state:"+state+"lastItem:"
  97. +lastItem);
  98. //显示50条ListItem,即0-49,因为onScrollStateChanged是在“拖动滑动”执行过之后才触发,所以用adapter.count<=41作条件
  99. if(adapter.count<=41){
  100. adapter.count+=10;
  101. adapter.notifyDataSetChanged();
  102. }
  103. }
  104. }
  105. /**
  106. *要用用于生成显示数据
  107. *
  108. */
  109. classListViewAdapterextendsBaseAdapter{
  110. intcount=10;
  111. publicintgetCount(){
  112. Log.i(TAG,"getCount>>>count:"+count);
  113. returncount;
  114. }
  115. publicObjectgetItem(intpos){
  116. Log.i(TAG,"getItem>>>pos:"+pos);
  117. returnpos;
  118. }
  119. publiclonggetItemId(intpos){
  120. Log.i(TAG,"getItemId>>>ItemId:"+pos);
  121. returnpos;
  122. }
  123. publicViewgetView(intpos,Viewv,ViewGroupp){
  124. Log.i(TAG,"getView>>>pos:"+pos);
  125. TextViewview;
  126. if(v==null){
  127. view=newTextView(MainActivity.this);
  128. }else{
  129. view=(TextView)v;
  130. }
  131. view.setText("ListItem"+pos);
  132. view.setTextSize(20f);
  133. view.setGravity(Gravity.CENTER);
  134. view.setHeight(60);
  135. returnview;
  136. }
  137. }
  138. }





Java代码 收藏代码
  1. packagehbq.android.myapp.listview;
  2. importandroid.app.ListActivity;
  3. importandroid.os.Bundle;
  4. importandroid.util.Log;
  5. importandroid.view.Gravity;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.BaseAdapter;
  9. importandroid.widget.Button;
  10. importandroid.widget.LinearLayout;
  11. importandroid.widget.ListView;
  12. importandroid.widget.TextView;
  13. importandroid.widget.Toast;
  14. importandroid.widget.LinearLayout.LayoutParams;
  15. publicclassButtonLoadingActivityextendsListActivity{
  16. privatestaticfinalStringTAG="ButtonLoadingActivity";
  17. privateListViewAdapteradapter=newListViewAdapter();
  18. privateListViewlistView;
  19. /**
  20. *设置布局显示的属性
  21. */
  22. privateLayoutParamsmLayoutParams=newLinearLayout.LayoutParams(
  23. LinearLayout.LayoutParams.WRAP_CONTENT,
  24. LinearLayout.LayoutParams.WRAP_CONTENT);
  25. /**
  26. *设置布局显示目标最大化属性
  27. */
  28. privateLayoutParamsFFlayoutParams=newLinearLayout.LayoutParams(
  29. LinearLayout.LayoutParams.FILL_PARENT,
  30. LinearLayout.LayoutParams.FILL_PARENT);
  31. protectedvoidonCreate(BundlesavedInstanceState){
  32. super.onCreate(savedInstanceState);
  33. Log.i(TAG,"onCreate(BundlesavedInstanceState)>>>>>>>>>>>>>>>");
  34. LinearLayoutlayout=newLinearLayout(this);
  35. layout.setOrientation(LinearLayout.HORIZONTAL);
  36. Buttonbutton=newButton(this);
  37. button.setText("点击加载下10条...");
  38. button.setGravity(Gravity.CENTER_VERTICAL);
  39. layout.addView(button,FFlayoutParams);
  40. layout.setGravity(Gravity.CENTER);
  41. LinearLayoutloadingLayout=newLinearLayout(this);
  42. loadingLayout.addView(layout,mLayoutParams);
  43. loadingLayout.setGravity(Gravity.CENTER);
  44. listView=getListView();
  45. listView.addFooterView(loadingLayout);
  46. button.setOnClickListener(newButton.OnClickListener(){
  47. @Override
  48. publicvoidonClick(Viewv){
  49. adapter.count+=10;
  50. Log.i(TAG,"setOnClickListener:"+adapter.count);
  51. adapter.notifyDataSetChanged();
  52. intcurrentPage=adapter.count/10;
  53. Toast.makeText(getApplicationContext(),
  54. "第"+currentPage+"页",Toast.LENGTH_LONG).show();
  55. }
  56. });
  57. setListAdapter(adapter);
  58. }
  59. classListViewAdapterextendsBaseAdapter{
  60. intcount=10;/*startingamount*/
  61. publicintgetCount(){
  62. returncount;
  63. }
  64. publicObjectgetItem(intpos){
  65. returnpos;
  66. }
  67. publiclonggetItemId(intpos){
  68. returnpos;
  69. }
  70. publicViewgetView(intpos,Viewv,ViewGroupp){
  71. Log.i(TAG,"getView>>>pos:"+pos);
  72. TextViewview;
  73. if(v==null){
  74. view=newTextView(ButtonLoadingActivity.this);
  75. }else{
  76. view=(TextView)v;
  77. }
  78. view.setText("ListItem"+pos);
  79. view.setTextSize(20f);
  80. view.setGravity(Gravity.CENTER);
  81. view.setHeight(60);
  82. returnview;
  83. }
  84. }
  85. }



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics