只是简单的应用,公司网络原因,暂时无法下载v4源码,所以之后完善。
/**
* google最新v4包中的下拉刷新 SwipeRefreshLayout
* @author pangzf
*
*1.布局文件中swipeRefreshLayout中需要添加listView或者gridView
* 试了添加TextView,HorizontalListView等都无用。
* 看来现在可以接受的布局是继承了AbsListView的相应布局,例如listview和gridview
*2.暂时还不知道原因,由于公司网络问题无法下载最新v4源码.之后补上
*3.其他功能等看了文档之后后续添加
*4.新的v4包已在libs文件夹中
*
* 参考:http://www.eoeandroid.com/thread-328133-1-1.html
*/
效果
代码:
package com.example.myswiperefresh;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.graphics.drawable.GradientDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
/**
* google最新v4包中的下拉刷新 SwipeRefreshLayout
* @author pangzf
*
*1.布局文件中swipeRefreshLayout中需要添加listView获得gridView
* 试了添加TextView,HorizontalListView等都无用。
* 看来现在可以接受的布局是继承了AbsListView的相应布局,例如listview和gridview
*2.暂时还不知道原因,由于公司网络问题无法下载最新v4源码.之后补上
*3.其他功能等看了文档之后后续添加
*4.新的v4包已在libs文件夹中
*
* 参考:http://www.eoeandroid.com/thread-328133-1-1.html
*/
public class MainActivity extends Activity {
private SwipeRefreshLayout mSwipeRefresh;//v4中新的下拉刷新控件
private ListView mLv;
private List<String> mDatas;//数据
private MyBaseAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLv = (ListView) findViewById(R.id.lv);
mSwipeRefresh = (SwipeRefreshLayout) findViewById(R.id.swiperefresh);
initData();
mAdapter = new MyBaseAdapter();
mLv.setAdapter(mAdapter);
//设置刷新监听
//参数不要为null,否则会抛异常,暂时还不知道原因,由于公司网络问题无法下载最新v4源码.之后补上
mSwipeRefresh.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
//一般情况下,我们会在刷新的过程中异步加载数据
new MyAsyncTask().execute("");
}
});
//设置加载动画的颜色
/**
* (int colorRes1 滑动的时候伸缩的颜色, int 第二个颜色, int 第三个颜色, int 第四个颜色)
* 这边处理顺序是界面上刷新跳显示颜色的顺序
*/
mSwipeRefresh.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_red_light, android.R.color.holo_green_light, android.R.color.holo_orange_light);
}
/**
* 初始化数据
*/
private void initData() {
mDatas = new ArrayList<String>();
for(int i=0;i<10;i++){
mDatas.add("第"+i+"个");
}
}
/**
* 给lv添加一条数据
* @author pangzf
*
*/
private class MyAsyncTask extends AsyncTask<String, String, Boolean>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... params) {
//异步加载数据
//例:lv添加一条数据
mDatas.add("新的一条数据");
//为了模拟真实情况我们将sleep 2秒时间
SystemClock.sleep(2000);
return true;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if(result){
mAdapter.notifyDataSetChanged();
//停止swipeRefreshLayout刷新
mSwipeRefresh.setRefreshing(false);
}
}
}
private class MyBaseAdapter extends BaseAdapter{
private TextView mTv;
private View root;
@Override
public int getCount() {
return mDatas.size();
}
@Override
public Object getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
root = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null, false);
String data = mDatas.get(position);
mTv = (TextView) root.findViewById(R.id.tv);
mTv.setText(data);
return root;
}
}
}
布局文件:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/swiperefresh"
>
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/lv"
/>
</android.support.v4.widget.SwipeRefreshLayout>
源码地址:
http://download.csdn.net/detail/pangzaifei/7351889