简介:
Google自己的下拉刷新组件SwipeRefreshLayout
注:首先须把你的support library的版本升级到19.1或更新
-
布局文件
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeLayout"
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">
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
-
代码文件
public class MainActivity extends Activity
implements SwipeRefreshLayout.OnRefreshListener{
//Google官方推出的一款下拉刷新组件
private SwipeRefreshLayout sRefreshLayout;;
private ListView lv;
private ArrayAdapter<String> mAdapter;
private ArrayList<String> data;
private boolean isRefresh = false;//是否刷新中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iviview();//空间初始化
//设置SwipeRefreshLayout
sRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout);
//设置进度条的颜色主题,最多能设置四种,加载颜色是循环播放的,只要没有完成刷新就会一直循环.
sRefreshLayout.setColorSchemeColors(Color.YELLOW,
Color.GREEN,
Color.BLUE,
Color.RED);
/*
* 设置一系列sRefreshLayout属性
* 设置手指在屏幕下拉多少距离会触发下拉刷新
*/
// sRefreshLayout.setDistanceToTriggerSync(300);
// // 设定下拉圆圈的背景
// sRefreshLayout.setProgressBackgroundColorSchemeColor(Color.WHITE);
// // 设置圆圈的大小
// sRefreshLayout.setSize(SwipeRefreshLayout.LRGE);
//设置下拉刷新的监听
sRefreshLayout.setOnRefreshListener(this);
}
//初始化
private void iviview() {
lv = (ListView) findViewById(R.id.listview);
data = new ArrayList<String>();
//遍历集合
for(int i=0;i<8;i++){
data.add("第 " + i + " 个Item");
}
//初始化Adapter
mAdapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, data);
lv.setAdapter(mAdapter);
}
/*
* 监听器SwipeRefreshLayout.OnRefreshListener中的方法,当下拉刷新后触发
*/
public void onRefresh() {
//检查是否处于刷新状态
if (!isRefresh) {
isRefresh = true;
//模拟加载网络数据,这里设置2秒,能看到4色进度条
new Handler().postDelayed(new Runnable() {
public void run() {
//显示或隐藏刷新进度条
sRefreshLayout.setRefreshing(false);
//修改adapter的数据
data.add("新添加的Item");
mAdapter.notifyDataSetChanged();
isRefresh = false;
}
}, 2000);
}
}
}
-
演示
-
注:
这种情况是版本问题:(建议用AS来做)
借鉴yungfan同志。。。