SwipeRefreshLayout实现下拉刷新
在开发App时,经常用到下拉刷新的功能,并且下拉的同时的重新获取网络数据,进行数据的更新,所以用到了SwipeRefreshLayout来简单的实现下拉刷新功能
简单介绍
- setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener)
下拉刷新的监听,重写其中的onRefresh()方法,实现你刷新所要完成的事 - setRefreshing(boolean refreshing)
设置刷新状态,一般在onRefresh()结束时把属性状态设置为false
如何使用
1.在布局中添加SwipeRefreshLayout(只能有一个孩子),往其中放入一个ListView
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
2.代码中
private SwipeRefreshLayout swipe;
private ListView listview;
private List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swipe_test);
swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
listview = (ListView) findViewById(R.id.listview);
list = new ArrayList<String>();
//在list中添加数据
for(int i=0; i<10 ; i++){
list.add("i="+i);
}
//设置进度加载框的背景颜色
swipe.setProgressBackgroundColorSchemeResource(android.R.color.white);
//设置下拉刷新动画的颜色, 这里的setColorScheme方法已经被舍弃
//需要使用setColorSchemeResources
swipe.setColorSchemeResources(R.color.red,R.color.blue,R.color.green,R.color.yellow);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
listview.setAdapter(adapter);
//设置下拉刷新的监听
swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//实现你所需要刷新内容的操作
list.add("刷新出的数据");
adapter.notifyDataSetChanged();
//设置刷新状态未false,否则刷新动画一直持续
swipe.setRefreshing(false);
}
});
}