編輯:關於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
Android應用性能優化系列視圖篇——SVG圖片版本兼容及性能優化解決方案
SVG矢量圖在圖片表現力方面遠遠優於PNG位圖,同時在可維護性和修改性方面也比位圖要方便很多。盡管Android在5.0版本就引入了SVG圖片的解決方案:Vector。然
Android必知必會-帶列表的地圖POI周邊搜索
背景先看效果圖:(以公司附近的國貿為中心點)上面是地圖,下面是地理位置列表,有的只有地理位置列表(QQ動態的位置),這是個很常見的功能。它有個專門的叫法:POI周邊搜索。
andriod first app-computer
andriod first app-computer 個人信息:就讀於燕大本科軟件工程專業 目前大三; 本人博客:google搜索“cqs_2012”即可; 個人愛
android產品研發(十六)--)開發者選項
上一篇文章中我們講解了android中內存對象的序列化方式。由於android開發涉及到不同Activity的數據傳遞,對於基本數據類型數據的傳遞是沒有問題的,但是一旦涉