Android中的延迟加载系列(ListView 2)

来源:互联网 发布:大众cc轮毂数据 编辑:程序博客网 时间:2024/06/05 08:59

上一节讲述了Listview延迟加载的封装,本节将讲述如何在Activity中进行调用。

首先定义一个ListView布局

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:id="@+id/linearLayoutWhole"  
  5.     android:layout_width="fill_parent" android:layout_height="fill_parent"  
  6.     android:orientation="vertical">  
  7.   
  8.   
  9.     <ListView android:id="@android:id/list" android:layout_width="fill_parent"  
  10.         android:layout_height="fill_parent" android:drawSelectorOnTop="false" />  
  11.   
  12. </LinearLayout>     

其次定义一个ListActivity,引入上述布局

[html] view plaincopyprint?
  1. public class LazyLoadingActivity extends ListActivity  

在onCreate() 方法中加载数据和布局,LongOperation更多的相信信息请参照 页面(Activity)之间的平滑跳转及封 法中加载数据


[html] view plaincopyprint?
  1. @Override  
  2.     public void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);   
  4.         new LongOperation(this,new Excution(){  
  5.             @Override  
  6.             public void longExcute(){     
  7.                 lazyData = new LazyListData<Row>(UIData.getTotalRows(),  
  8.                         UIData.getListRows(0,LazyAdapter.PAGE_SIZE_LAZY-1));  
  9.                 SystemClock.sleep(3000);//休息3秒,模拟网络延迟  
  10.             }  
  11.             @Override  
  12.             public void uiUpdate(){       
  13.                 setContentView(R.layout.empty_list);          
  14.                 setListAdapter(new LazyAdapter<Row>(  
  15.                         LazyLoadingActivity.this,  
  16.                         R.layout.row,//list中的行布局  
  17.                         lazyData.getListData(),//得到数据  
  18.                         lazyData.getTotalRows(),//得到总行数  
  19.                         new LazyLoading(){  
  20.                             @Override  
  21.                             public void cacheNextPageData(int startIndex, int endIndex) {//加载下一页  
  22.                                 Log.d(TAG,"cacheNextPageData() startIndex="+startIndex+"endIndex="+endIndex);  
  23.                                 List<Row> nextList = UIData.getListRows(startIndex,endIndex);  
  24.                                 lazyData.getListData().addAll(nextList);   
  25.                                 SystemClock.sleep(3000);//休息3秒,模拟网络延迟  
  26.                             }  
  27.                             @Override  
  28.                             public void updateItemView(View convertView, Object bean) {//更新每一行  
  29.                                 updateItem(convertView, (Row) bean);  
  30.                             }     
  31.                         }  
  32.                 ));  
  33.             }  
  34.         }).execute(new String[]{});  
  35.           
  36.     }  

new LazyAdapter()方法是封装之后的延迟加载适配,参见程序代码说明。

下一节将通过一个完整项目进行展示。(待续)