下拉刷新
2015-11-24 15:28
330 查看
package com.example.swiperefreshlayout; import java.util.ArrayList; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { private SwipeRefreshLayout sr; private int count = 0; private ArrayList<String> data = new ArrayList<String>(); private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sr = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout); ListView list = (ListView) findViewById(R.id.listView); // 设置刷新动画的颜色,可以设置1或者更多. // 我们暂时使用三个Android系统自带的颜色。 sr.setColorSchemeResources(android.R.color.holo_blue_dark, android.R.color.holo_green_dark, android.R.color.holo_orange_dark); sr.setOnRefreshListener(new OnRefreshListener() { // SwipeRefreshLayout接管其包裹的ListView下拉事件。 @Override public void onRefresh() { // 每一次对ListView的下拉动作,将触发SwipeRefreshLayout的onRefresh()。 new MyTask().execute(); } }); // 使用Android系统自带的一个简单TextView布局文件android.R.layout.simple_list_item_1显示我们的额数据内容。 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); list.setAdapter(adapter); } private class MyTask extends AsyncTask{ @Override protected void onPreExecute() { // true,刷新开始,所以启动刷新的UI样式 sr.setRefreshing(true); } @Override protected Object doInBackground(Object... arg0) { Log.d("后台线程","开始耗时操作..."); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } Log.d("后台线程","耗时操作完毕."); return count++; } @Override protected void onPostExecute(Object result) { // add(0,xxx)每次更新的数据添加到头部 data.add(0, "数据" + result); adapter.notifyDataSetChanged(); // 刷新完毕 // false,刷新完成,要停止UI的刷新表现样式 sr.setRefreshing(false); } } /* // 每一次下拉刷新将触发更新操作动作。 // 这里将是比较耗时的操作:如网络请求的数据,加载一个大图片。 // 简单期间,我们假设就是简单的将count数据加1,然后更新显示。 // 备注:sr.setRefreshing(true) 到 sr.setRefreshing(false)之间的这段代码 , // 在实际的应用开发中一般就是线程化的、耗时的或者后台的操作代码。 private void longTimeOperation() { // true,刷新开始,所以启动刷新的UI样式 sr.setRefreshing(true); // 开始启动刷新 // 在这里放耗时操作的 AsyncTask线程、后台Service等代码 // add(0,xxx)每次更新的数据添加到头部 data.add(0, "" + count++); adapter.notifyDataSetChanged(); // 刷新完毕 // false,刷新完成,要停止UI的刷新表现样式 sr.setRefreshing(false); }*/
}
相关文章推荐
- 未能加载文件或程序集“System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”
- mysql dump 备份命令
- 实用的清除浮动的方法
- Git,SoureTree密钥SSH的生成
- T-SQL DateTime Format
- java多线程 wait与sleep的区别
- Ubuntu 14.04中使用sublime text 3无法输入中文的问题
- POJ 2155 Matrix 【树状数组 更新区间 求点】
- ORACLE SQL性能优化系列 (一)
- ww
- C语言实现两栈空间共享
- 西门子数据存储演示图
- web api timeout
- 磁带利用率问题
- [makefile]makefile中常用函数
- JSON与XML的区别比较
- 配置Play开发环境以及创建Demo
- 自定义ProgressDialog 博客3
- 近期遇到的一些问题及解决方法(11-24)
- Oracle nvl(),nvl2()函数介绍