編輯:關於Android編程
Android實現上拉加載更多功能以及下拉刷新功能,
采用了目前比較火的PullToRefresh,他是目前實現比較好的下拉刷新的類庫。
目前他支持的控件有:ListView, ExpandableListView,GridView,WebView等。
下載地址:https://github.com/chrisbanes/Android-PullToRefresh
首先第一步當然是導入libriay到咱們的項目了,具體導入方式,這裡不再贅述。
下面是個例子采用的是ListView,當然其余的和這個類似
1、布局文件activity_main.xml
01
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
02
xmlns:tools
=
"http://schemas.android.com/tools"
03
android:layout_width
=
"match_parent"
04
android:layout_height
=
"match_parent"
05
tools:context
=
".MainActivity"
>
06
07
<
com.handmark.pulltorefresh.library.PullToRefreshListView
08
android:id
=
"@+id/pull_refresh_list"
09
android:layout_width
=
"fill_parent"
10
android:layout_height
=
"fill_parent"
/>
11
RelativeLayout
>
2、要實現下拉刷新的功能很簡單,只需要實現OnRefreshListener的OnRefresh方法即可。這裡說一下如何實現上拉和下拉分別執行不同的操作。
這裡參考了http://blog.csdn.net/ueryueryuery/article/details/17440465
原理是:根據下拉和上拉顯示的布局的可見狀態類區分上拉還是下拉,然後執行相應操作。
在PullToRefresh的類庫的com.handmark.pulltorefresh.library包下,打開PullToRefreshBase.java,在這個類的最後面添加如下代碼:
1
public
boolean
isHeaderShown()
{
2
return
getHeaderLayout().isShown();
3
}
4
5
public
boolean
isFooterShown()
{
6
return
getFooterLayout().isShown();
7
}
3、在Activity的代碼如下:
01
public
class
MainActivity
extends
ListActivity
{
02
03
private
PullToRefreshListView
mPullToRefreshListView;
04
05
private
LinkedList
mItemList;
06
private
ArrayAdapter
adapter;
07
08
private
Context
context;
09
@Override
10
protected
void
onCreate(Bundle
savedInstanceState) {
11
super
.onCreate(savedInstanceState);
12
setContentView(R.layout.activity_main);
13
context
=
this
;
14
initData();
15
16
adapter
=
new
ArrayAdapter(
this
,
android.R.layout.simple_list_item_1, mItemList);
17
18
//初始化控件
19
mPullToRefreshListView
= (PullToRefreshListView)findViewById(R.id.pull_refresh_list);
20
ListView
mListView = mPullToRefreshListView.getRefreshableView();
21
mListView.setAdapter(adapter);
22
23
//設置pull-to-refresh模式為Mode.Both
24
mPullToRefreshListView.setMode(Mode.BOTH);
25
26
//設置上拉下拉事件
27
mPullToRefreshListView.setOnRefreshListener(
new
OnRefreshListener()
{
28
29
@Override
30
public
void
onRefresh(PullToRefreshBase
refreshView) {
31
32
if
(refreshView.isHeaderShown()){
33
Toast.makeText(context,
"下拉刷新"
,Toast.LENGTH_SHORT).show();
34
//下拉刷新
業務代碼
35
}
else
{
36
Toast.makeText(context,
"上拉加載更多"
,Toast.LENGTH_SHORT).show();
37
//上拉加載更多
業務代碼
38
}
39
40
}
41
});
42
43
}
44
45
46
private
void
initData(){
47
//初始化數據
48
mItemList
=
new
LinkedList();
49
mItemList.addAll(Arrays.asList(data));
50
51
}
52
53
private
String[]
data =
new
String[]{
"data1"
,
"data2"
,
"data3"
,
"data4"
,
"data5"
,
"data6"
,
54
"data1"
,
"data2"
,
"data3"
,
"data4"
,
"data5"
,
"data6"
};
55
}
如上代碼所示,在OnRefresh的實現代碼中,用以區分上拉還是下拉,關鍵代碼如下:
1
if
(refreshView.isHeaderShown()){
2
Toast.makeText(context,
"下拉刷新"
,Toast.LENGTH_SHORT).show();
3
//下拉刷新
業務代碼
4
}
else
{
5
Toast.makeText(context,
"上拉加載更多"
,Toast.LENGTH_SHORT).show();
6
//上拉加載更多
業務代碼
7
}
至此,運行項目,可以得到演示結果了
原文地址 : http://www.dutycode.com/post-13.html
我的博客:http://www.dutycode.com
參考網址:http://blog.csdn.net/ueryueryuery/article/details/17440465
SVG矢量圖在圖片表現力方面遠遠優於PNG位圖,同時在可維護性和修改性方面也比位圖要方便很多。盡管Android在5.0版本就引入了SVG圖片的解決方案:Vector。然
背景先看效果圖:(以公司附近的國貿為中心點)上面是地圖,下面是地理位置列表,有的只有地理位置列表(QQ動態的位置),這是個很常見的功能。它有個專門的叫法:POI周邊搜索。
andriod first app-computer 個人信息:就讀於燕大本科軟件工程專業 目前大三; 本人博客:google搜索“cqs_2012”即可; 個人愛
上一篇文章中我們講解了android中內存對象的序列化方式。由於android開發涉及到不同Activity的數據傳遞,對於基本數據類型數據的傳遞是沒有問題的,但是一旦涉