Android基于ListView实现类似Market分页加载效果示例
本文实例讲述了Android基于ListView实现类似Market分页加载效果。分享给大家供大家参考,具体如下:
最近几天研究ListView实现分页加载和滚动加载,发现可以用listView的OnScroll方法来实现,直接上代码
ListViewScroll.java
packagezy.lucifer.ListViewScroll; importandroid.app.Activity; importandroid.os.Bundle; importandroid.util.Log; importandroid.view.Gravity; importandroid.view.View; importandroid.view.ViewGroup; importandroid.widget.AbsListView; importandroid.widget.BaseAdapter; importandroid.widget.LinearLayout; importandroid.widget.ListView; importandroid.widget.ProgressBar; importandroid.widget.TextView; importandroid.widget.Toast; importandroid.widget.AbsListView.OnScrollListener; importandroid.widget.LinearLayout.LayoutParams; publicclassListViewScrollextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ privateLayoutParamsmLayoutParams=newLinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); /** *设置布局显示目标最大化属性 */ privateLayoutParamsFFlayoutParams=newLinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); ListViewlistView; privateintlastItem=0; LinearLayoutloadingLayout; privatelistViewAdapteradapter; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); listView=(ListView)findViewById(R.id.myList); Log.i("test","onCreate(BundlesavedInstanceState)>>>>>>>>>>>>>>>"); //线性布局 LinearLayoutlayout=newLinearLayout(this); //设置布局水平方向 layout.setOrientation(LinearLayout.HORIZONTAL); //进度条 ProgressBarprogressBar=newProgressBar(this); //进度条显示位置 progressBar.setPadding(0,0,15,0); //把进度条加入到layout中 layout.addView(progressBar,mLayoutParams); //文本内容 TextViewtextView=newTextView(this); textView.setText("加载中..."); textView.setGravity(Gravity.CENTER_VERTICAL); //把文本加入到layout中 layout.addView(textView,FFlayoutParams); //设置layout的重力方向,即对齐方式是 layout.setGravity(Gravity.CENTER); //设置ListView的页脚layout loadingLayout=newLinearLayout(this); loadingLayout.addView(layout,mLayoutParams); loadingLayout.setGravity(Gravity.CENTER); listView.addFooterView(loadingLayout); adapter=newlistViewAdapter(); listView.setAdapter(adapter); listView.setOnScrollListener(newOnScrollListener(){ @Override publicvoidonScroll(AbsListViewview,intfirstVisibleItem, intvisibleItemCount,inttotalItemCount){ //TODOAuto-generatedmethodstub Log.i("test","Scroll>>>first:"+firstVisibleItem+",visible:"+visibleItemCount+",total:"+totalItemCount); lastItem=firstVisibleItem+visibleItemCount-1; Log.i("test","Scroll>>>lastItem:"+lastItem); //显示50条ListItem,即0-49,因为onScroll是在“滑动”执行过之后才触发,所以用adapter.count<=41作条件 intscrolllength=101; if(adapter.count<=scrolllength){ if(firstVisibleItem+visibleItemCount==totalItemCount){ adapter.count+=10; adapter.notifyDataSetChanged(); listView.setSelection(lastItem); intcurrentPage=adapter.count/10; Toast.makeText(getApplicationContext(),"第"+currentPage+"页",Toast.LENGTH_LONG).show(); } } else{ listView.removeFooterView(loadingLayout); } } @Override publicvoidonScrollStateChanged(AbsListViewview,intscrollState){ //TODOAuto-generatedmethodstub } }); } classlistViewAdapterextendsBaseAdapter{ intcount=10;/*startingamount*/ publicintgetCount(){ returncount; } publicObjectgetItem(intpos){ returnpos; } publiclonggetItemId(intpos){ returnpos; } publicViewgetView(intpos,Viewv,ViewGroupp){ Log.i("test","getView>>>pos:"+pos); TextViewview; if(v==null){ view=newTextView(ListViewScroll.this); }else{ view=(TextView)v; } view.setText("ListItem"+pos); view.setTextSize(20f); view.setGravity(Gravity.CENTER); view.setHeight(60); returnview; } } }
main.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListViewandroid:cacheColorHint="#00000000"android:id="@+id/myList" android:layout_width="fill_parent"android:layout_height="fill_parent" > </ListView> </LinearLayout>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。