In the past few days, we have studied how to implement paging loading and scrolling loading in listview. We found that we can use the onscroll method of listview to implement this, and directly upload the code.
Listviewscroll. Java
Package ZY. lucifer. listviewscroll; <br/> Import android. app. activity; <br/> Import android. OS. bundle; <br/> Import android. util. log; <br/> Import android. view. gravity; <br/> Import android. view. view; <br/> Import android. view. viewgroup; <br/> Import android. widget. abslistview; <br/> Import android. widget. baseadapter; <br/> Import android. widget. linearlayout; <br/> Import android. widget. listview; <br/> Import android. widget. progressbar; <br/> Import android. widget. textview; <br/> Import android. widget. toast; <br/> Import android. widget. abslistview. onscrolllistener; <br/> Import android. widget. linearlayout. layoutparams; <br/> public class listviewscroll extends activity {<br/>/** called when the activity is first created. */<br/> private layoutparams mlayoutparams = new linearlayout. layoutparams (<br/> linearlayout. layoutparams. wrap_content, <br/> linearlayout. layoutparams. wrap_content); <br/>/** <br/> * set the maximization attribute of the layout display target <br/> */<br/> private layoutparams fflayoutparams = new linearlayout. layoutparams (<br/> linearlayout. layoutparams. fill_parent, <br/> linearlayout. layoutparams. fill_parent); <br/> listview; <br/> private int lastitem = 0; <br/> linearlayout loadinglayout; <br/> private listviewadapter adapter; <br/> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); <br/> setcontentview (R. layout. main); <br/> listview = (listview) findviewbyid (R. id. mylist); </P> <p> log. I ("test", "oncreate (bundle savedinstancestate) >>>>>>>>>>>>>>> "); <br/> // linear layout <br/> linearlayout layout = new linearlayout (this); <br/> // sets the horizontal layout direction <br/> layout. setorientation (linearlayout. horizontal); <br/> // progress bar <br/> progressbar = new progressbar (this); <br/> // position of the progress bar <br/> progressbar. setpadding (0, 0, 15, 0); <br/> // Add the progress bar to layout <br/> layout. addview (progressbar, mlayoutparams); <br/> // text content <br/> textview = new textview (this); <br/> textview. settext ("loading... "); <br/> textview. setgravity (gravity. center_vertical); <br/> // Add the text to layout <br/> layout. addview (textview, fflayoutparams); <br/> // set the gravity direction of layout, that is, the alignment is <br/> layout. setgravity (gravity. center); <br/> // set the layout of the listview footer <br/> loadinglayout = new linearlayout (this); <br/> loadinglayout. addview (layout, mlayoutparams); <br/> loadinglayout. setgravity (gravity. center); <br/> listview. addfooterview (loadinglayout); <br/> adapter = new listviewadapter (); <br/> listview. setadapter (adapter); <br/> listview. setonscrolllistener (New onscrolllistener () {</P> <p> @ override <br/> Public void onscroll (abslistview view, int firstvisibleitem, <br/> int visibleitemcount, int totalitemcount) {<br/> // todo auto-generated method stub <br/> log. I ("test", "scroll >>> first:" + firstvisibleitem + ", visible:" + visibleitemcount + ", total:" + totalitemcount ); <br/> lastitem = firstvisibleitem + visibleitemcount-1; <br/> log. I ("test", "scroll >>> lastitem:" + lastitem); <br/> // 50 listitems are displayed, that is, 0-49, because onscroll is triggered after the "slide" operation, the adapter is used. count <= 41 as the condition <br/> int scrolllength = 101; <br/> If (adapter. count <= scrolllength) {<br/> If (firstvisibleitem + visibleitemcount = totalitemcount) {<br/> adapter. count + = 10; <br/> adapter. yydatasetchanged (); <br/> listview. setselection (lastitem); <br/> int currentpage = adapter. count/10; <br/> toast. maketext (getapplicationcontext (), "page" + currentpage + ", toast. length_long ). show (); <br/>}< br/> else {<br/> listview. removefooterview (loadinglayout); <br/>}< br/> @ override <br/> Public void onscrollstatechanged (abslistview view, int scrollstate) {<br/> // todo auto-generated method stub <br/>}< br/> }); <br/>}< br/> class listviewadapter extends baseadapter {<br/> int COUNT = 10;/* starting amount */<br/> Public int getcount () {<br/> return count; <br/>}< br/> Public object getitem (int pos) {<br/> return Pos; <br/>}< br/> Public long getitemid (int pos) {<br/> return Pos; <br/>}< br/> Public View getview (INT POs, view V, viewgroup p) {<br/> log. I ("test", "getview >>> pos:" + POS); <br/> textview view; <br/> If (V = NULL) {<br/> View = new textview (listviewscroll. this); <br/>}else {<br/> View = (textview) V; <br/>}< br/> View. settext ("listitem" + POS); <br/> View. settextsize (20f); <br/> View. setgravity (gravity. center); <br/> View. setheight (60); <br/> return view; </P> <p >}< br/>}
Main. xml
<? XML version = "1.0" encoding = "UTF-8"?> <Br/> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" <br/> Android: Orientation = "vertical" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> <listview Android: cachecolorhint = "#00000000" Android: id = "@ + ID/mylist" <br/> Android: layout_width = "fill_parent" Android: layout_height = "fill_parent" <br/> </listview> <br/> </linearlayout> <br/>
As follows:
Because it is a local content, you cannot see the following circle waiting. If you do time-consuming operations, such as downloading an image or something, you can achieve
Enjoy ~!
This article by csdn blogger Zeng Yang produced address http://blog.csdn.net/Zengyangtech/archive/2011/03/17/6255554.aspx
Reprinted please note