作者badhabit (習慣壞習慣)
看板AndroidDev
標題[分享] 當ListView拉到頂時重新整理、拉到底時載入更多。
時間Wed Apr 27 00:11:31 2011
今天再來延伸一些ListView的用法
當ListView拉到頂時自動重新整理、拉到底時自動載入更多。
對ListVie不熟的朋友,請先搜尋之前版上一些對ListView的教學
一開始先建立兩個layout,分別是head.xml、foot.xml
分別用來顯示重新整理中、載入中的文字
接下來直接來看主要的程式碼
這些變數是用來判斷要不要更新或載入資料
boolean shouldRefresh=true,isRefreshing=false;
boolean shouldLoadData=true,isLoadingData=false;
head = LayoutInflater.from(this).inflate(R.layout.head, null);
//將head.xml轉為view
headtext = (TextView) head.findViewById(R.id.head);
//取得head裡的TextView
foot = LayoutInflater.from(this).inflate(R.layout.foot, null);
//將foot.xml轉為view
list = getListView();//取得ListView
list.addHeaderView(head, null, false);//就addHeaderView...
list.addFooterView(foot, null, false);//就addFooterView...
mydataAdapter = new MydataAdapter(Main.this,alldata);
setListAdapter(mydataAdapter);//一定要放在addHeaderView及addFooterView的後面
接下來在list.setOnScrollListener加上兩個事件
public void onScroll(AbsListView view, int firstVisibleItem,int
visibleItemCount, int totalItemCount) {
shouldLoadData = false;
shouldRefresh = false;
if (firstVisibleItem==0) {//拉到頂時
shouldRefresh=true;
}else if (firstVisibleItem + visibleItemCount == totalItemCount){
//拉到底時
if (list.getCount()<60){
shouldLoadData=true;
}else{//只是測試用,如果超過60筆資料就不要再載入了
foot.setVisibility(View.GONE);
list.removeFooterView(foot);
shouldRefresh = false;
}
}
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
//當ListView拉到頂或底時
if (shouldRefresh) {//當ListView拉到頂
if (!isRefreshing)Refresh();//沒在更新資料時
list.setSelection(1);//不管更不更新,都移到第一項
}
if (shouldLoadData && !isLoadingData) {LoadData();}
//當ListView拉到底,且沒在載入資料時
}
}
以上就是比較主要的,其他的就請下載完整的程式碼
http://uploadmirrors.com/download/THZ5W6EA/ListView_AutoLoad.zip
請大家多多指教囉~
--
我的Android作品集
http://android.wuya.us/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.226.99
1F:推 jason860421:推~ 04/27 00:36
2F:推 givemepass:來研究看看 04/27 08:30
3F:推 kenliner:推~實用 04/27 08:47
4F:推 nowar100:已收錄 04/27 09:47
5F:推 QQting:實用! 04/27 10:28
6F:推 laiis:這太棒了!推推推到底! 04/27 10:39
7F:推 Lawnchern:推呀~ 04/27 15:05
8F:推 mamaya3:推一個 04/27 18:40