Android重点笔记,安卓listview 懒加载的实现笔记
1、實現目的與用途
使用懶加載可降低單次訪問后臺的所獲取的數據量,從而提高獲取數據的速度,減少流量使用,加快UI界面的響應,提高用戶體驗度。
2、實現思路
兩種實現思路:
1、先設定listview每次加載的數據項數,給listview底部項添加獲取更多按鈕,通過按
鈕的監聽事件訪問后臺獲取更多數據后刷新listview。
2、先設定listview每次加載的數據項數,通過監聽listview的滑動事件,當listview滑動至底部時訪問后臺服務獲取更多數據,刷新listview顯示。
3、實現方法要點
1、布局文件中需添加listview控件
示例代碼
android:id="@+id/lv_apps"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:cacheColorHint="#00000000"
android:fastScrollEnabled="true"?/>
2、給加載更多按鈕設置布局文件
示例代碼
android:id="@+id/loadMoreButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="更多"
android:textColor="#000000"
android:textSize="25dp"
android:gravity="center"
android:background="#00000000"
android:layout_gravity="center"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"/>
3、加載更多按鈕的代碼實現關鍵代碼:
loadMoreView?=?getLayoutInflater().inflate(R.layout.loadmore,?null);
loadMoreButton?=?(Button)?loadMoreView
.findViewById(R.id.loadMoreButton);
lv.addFooterView(loadMoreView,null,false);//獲取加載更多按鈕并添加到listview的底部
//以下代碼監聽加載更多按鈕
loadMoreButton.setOnClickListener(new?OnClickListener()?{
@Override
public?void?onClick(View?v)?{
//?TODO?Auto-generated?method?stub
//調用后臺接口獲取數據后更新列表
}
});
//以下代碼實現滑動列表時加載
·publicvoidonScroll(AbsListView?view,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount)?{
·this.visibleItemCount?=?visibleItemCount;
·visibleLastIndex?=?firstVisibleItem?+?visibleItemCount?-1;
·}
·publicvoidonScrollStateChanged(AbsListView?view,intscrollState)?{
·intitemsLastIndex?=?adapter.getCount()?-1;//數據集最后一項的索引
·intlastIndex?=?itemsLastIndex?+1;//加上底部的loadMoreView項
·if(scrollState?==?OnScrollListener.SCROLL_STATE_IDLE?&&?visibleLastIndex?==?lastIndex)?{
·//如果是自動加載,可以在這里放置異步加載數據的代碼
·Log.i("LOADMORE","loading...");
·}
·}
4、具體實現demo
1packagecom.scott.loadmore;
2
3importjava.util.ArrayList;
4
5importAndroid.app.ListActivity;
6importandroid.os.Bundle;
7importandroid.os.Handler;
8importandroid.util.Log;
9importandroid.view.View;
10importandroid.widget.AbsListView;
11importandroid.widget.AbsListView.OnScrollListener;
12importandroid.widget.Button;
13importandroid.widget.ListView;
14
15publicclassMainActivityextendsListActivityimplementsOnScrollListener?{
16privateListView?listView;
17privateintvisibleLastIndex?=0;//最后的可視項索引
18privateintvisibleItemCount;//?當前窗口可見項總數
19privateListViewAdapter?adapter;
20privateView?loadMoreView;
21privateButton?loadMoreButton;
22privateHandler?handler?=newHandler();
23
24@Override
25publicvoidonCreate(Bundle?savedInstanceState)?{
26super.onCreate(savedInstanceState);
27setContentView(R.layout.main);
28
29loadMoreView?=?getLayoutInflater().inflate(R.layout.load_more,null);
30loadMoreButton?=?(Button)?loadMoreView.findViewById(R.id.loadMoreButton);
31
32listView?=?getListView();//獲取id是list的ListView
33
34listView.addFooterView(loadMoreView);//設置列表底部視圖
35
36initAdapter();
37
38setListAdapter(adapter);//自動為id是list的ListView設置適配器
39
40listView.setOnScrollListener(this);//添加滑動監聽
41}
42
43
46privatevoidinitAdapter()?{
47ArrayList?items?=newArrayList();
48for(inti?=0;?i?<10;?i++)?{
49items.add(String.valueOf(i?+1));
50}
51adapter?=newListViewAdapter(this,?items);
52}
53
54
57@Override
58publicvoidonScroll(AbsListView?view,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount)?{
59this.visibleItemCount?=?visibleItemCount;
60visibleLastIndex?=?firstVisibleItem?+?visibleItemCount?-1;
61}
62
63
66@Override
67publicvoidonScrollStateChanged(AbsListView?view,intscrollState)?{
68intitemsLastIndex?=?adapter.getCount()?-1;//數據集最后一項的索引
69intlastIndex?=?itemsLastIndex?+1;//加上底部的loadMoreView項
70if(scrollState?==?OnScrollListener.SCROLL_STATE_IDLE?&&?visibleLastIndex?==?lastIndex)?{
71//如果是自動加載,可以在這里放置異步加載數據的代碼
72Log.i("LOADMORE","loading...");
73}
74}
75
76
80publicvoidloadMore(View?view)?{
81loadMoreButton.setText("loading...");//設置按鈕文字loading
82handler.postDelayed(newRunnable()?{
83@Override
84publicvoidrun()?{
85
86loadData();
87
88adapter.notifyDataSetChanged();//數據集變化后,通知adapter
89listView.setSelection(visibleLastIndex?-?visibleItemCount?+1);//設置選中項
90
91loadMoreButton.setText("load?more");//恢復按鈕文字
92}
93},2000);
94}
95
96
99privatevoidloadData()?{
100intcount?=?adapter.getCount();
101for(inti?=?count;?i?
102adapter.addItem(String.valueOf(i?+1));
103}
104}
105}
總結
以上是生活随笔為你收集整理的Android重点笔记,安卓listview 懒加载的实现笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps如何导入笔刷
- 下一篇: android sina oauth2.