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

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

首先定义一个ListView布局

  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>     
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/linearLayoutWhole"
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	android:orientation="vertical">


	<ListView android:id="@android:id/list" android:layout_width="fill_parent"
		android:layout_height="fill_parent" android:drawSelectorOnTop="false" />

</LinearLayout>	

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

  1. public class LazyLoadingActivity extends ListActivity  
public class LazyLoadingActivity extends ListActivity

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


  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.     }  
@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);	
		new LongOperation(this,new Excution(){
			@Override
			public void longExcute(){	
				lazyData = new LazyListData<Row>(UIData.getTotalRows(),
						UIData.getListRows(0,LazyAdapter.PAGE_SIZE_LAZY-1));
				SystemClock.sleep(3000);//休息3秒,模拟网络延迟
			}
			@Override
			public void uiUpdate(){		
				setContentView(R.layout.empty_list); 		
				setListAdapter(new LazyAdapter<Row>(
						LazyLoadingActivity.this,
						R.layout.row,//list中的行布局
						lazyData.getListData(),//得到数据
						lazyData.getTotalRows(),//得到总行数
						new LazyLoading(){
							@Override
							public void cacheNextPageData(int startIndex, int endIndex) {//加载下一页
								Log.d(TAG,"cacheNextPageData() startIndex="+startIndex+", endIndex="+endIndex);
								List<Row> nextList = UIData.getListRows(startIndex,endIndex);
								lazyData.getListData().addAll(nextList); 
								SystemClock.sleep(3000);//休息3秒,模拟网络延迟
							}
							@Override
							public void updateItemView(View convertView, Object bean) {//更新每一行
								updateItem(convertView, (Row) bean);
							}	
						}
				));
			}
		}).execute(new String[]{});
		
	}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值