使用Google 官方的控件SwipeRefreshLayout实现下拉刷新功能

  之前做东西的时候,经常会用到下拉刷新的功能,之前大家都在使用Github上的一个很著名的开源项目 PullToRefresh 

  

  但是,现在好消息来了,google在19.1版本的support-v4兼容包下面正式提供了官方的下拉刷新组件——SwipeRefreshLayout

  注意,你要使用这个组件必须要把你的支持库升级到19.1版本以上

 

  我们只需要在需要进行刷新的控件外面加上 SwipeRefreshLayout 就可以了  ,但是 ,这个控件的child必须是可滑动的View,比如说ScrollerView或者ListView等

 

  不多说,直接上代码,布局文件

  

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical"
 6     tools:context="com.android.teypullrepfesh.MainActivity" >
 7 
 8     <TextView
 9         android:layout_width="fill_parent"
10         android:layout_height="64dp"
11         android:text="@string/hello_world" />
12 
13     <android.support.v4.widget.SwipeRefreshLayout
14         android:id="@+id/refresh_layout"
15         android:layout_width="fill_parent"
16         android:layout_height="match_parent" >
17 
18         <ListView
19             android:id="@+id/list"
20             android:layout_width="fill_parent"
21             android:layout_height="match_parent" />
22     </android.support.v4.widget.SwipeRefreshLayout>
23 
24 </LinearLayout>
activity_main.xml

 

  然后在代码中的使用也很简单

 

 1 public class MainActivity extends Activity implements OnRefreshListener {
 2 
 3     public ListView listView;
 4     public SwipeRefreshLayout refreshLayout;
 5     private String[] mListStr = { "姓名:菜菜", "性别:男", "年龄:20", "居住地:大连",
 6             "邮箱:cwr941012@gmail.com" };
 7     private String[] mListStr_ = { "姓名:翠翠", "性别:男", "年龄:23", "居住地:北京",
 8             "邮箱:cwr941012@gmail.com" };
 9     //定义两个不同的数据源
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14         listView = (ListView) findViewById(R.id.list);
15         listView.setAdapter(new ArrayAdapter<String>(this,
16                 android.R.layout.simple_list_item_1, mListStr));
17         refreshLayout = (SwipeRefreshLayout) findViewById(R.id.refresh_layout);
18         refreshLayout.setOnRefreshListener(this);
19         //设置一个监听器
20         refreshLayout.setColorSchemeColors(android.R.color.holo_orange_light,
21                 android.R.color.holo_purple, android.R.color.holo_blue_dark,
22                 android.R.color.holo_red_light);
23         //设置刷新条的颜色
24 
25     }
26 
27     @Override
28     public void onRefresh() {
29         // TODO Auto-generated method stub
30         new Handler().postDelayed(new Runnable() {
31             public void run() {
32                 listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,
33                         android.R.layout.simple_list_item_1, mListStr_));
34                 refreshLayout.setRefreshing(false);
35             }
36         }, 5000);
37 
38     }
39 }
MainActivity.java

 

  在这里面,重写了 onRefresh() 函数进行刷新之中的操作

 

  基本上就是这样了,希望google能尽快把下拉加载更多的功能也添加进去就更加完美了

posted @ 2014-11-20 15:00  小菜小白  阅读(526)  评论(0编辑  收藏  举报