异步刷新加载
来源:互联网 发布:解压 mac 编辑:程序博客网 时间:2024/05/18 03:39
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化db
MyHelper helper = new MyHelper(MainActivity.this);
db = helper.getWritableDatabase();
//初始化xlistview
listView = (XListView) findViewById(R.id.mylist);
adapter = new MyAdapter(MainActivity.this);
listView.setAdapter(adapter);
//给listview设置上拉加载更多
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
//设置上拉加载监听
listView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//刷新
page = 1;
addTask();
}
@Override
public void onLoadMore() {
//加载更多,请求第page++页数据;
page++;
addTask();
}
});
//请求第一页数据;
addTask();
}
//启动异步任务;
private void addTask() {
MyTask task = new MyTask();
task.execute("");
}
class MyTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
//网络请求
return getDataFromHttp();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null && !s.equals("")) {
//解析从网络获取的数据
Gson gson = new Gson();
DataBean bean = gson.fromJson(s, DataBean.class);
if (bean != null) {
List<DataBean.ResultBean> resultBeen = bean.results;
if (resultBeen != null && resultBeen.size() > 0) {
//加载到listview上显示;
if (page > 1) {
adapter.addData(resultBeen);
//上拉加载更多时,将数据添加入数据库中;
addDb(resultBeen);
} else {
adapter.updateData(resultBeen);
// page==1时或者是第一次获取数据;或者是下拉刷新;只有在第一次获取数据时需要添加数据库
if(tag){
addDb(resultBeen);
tag=false;
}
}
listView.stopLoadMore();
listView.stopRefresh();
} else {
Toast.makeText(MainActivity.this, "返回数据列表为空!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "数据解析失败!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "网络获取数据失败!", Toast.LENGTH_LONG).show();
}
}
}
private String getDataFromHttp() {
try {
String path = URL_HOST + limit + "/" + page;
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
if (code == 200) {
InputStream is = connection.getInputStream();
String str = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
while ((str = reader.readLine()) != null) {
builder.append(str);
}
is.close();
reader.close();
System.out.println("page=" + page + " " + builder.toString());
return builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//将从网络获取的数据添加到数据库中;
private void addDb(List<DataBean.ResultBean> list) {
for (int i = 0; i < list.size(); i++) {
ContentValues values = new ContentValues();
values.put("title", list.get(i).title);
values.put("content", list.get(i).content);
db.insert("week3", null, values);
}
}
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化db
MyHelper helper = new MyHelper(MainActivity.this);
db = helper.getWritableDatabase();
//初始化xlistview
listView = (XListView) findViewById(R.id.mylist);
adapter = new MyAdapter(MainActivity.this);
listView.setAdapter(adapter);
//给listview设置上拉加载更多
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
//设置上拉加载监听
listView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//刷新
page = 1;
addTask();
}
@Override
public void onLoadMore() {
//加载更多,请求第page++页数据;
page++;
addTask();
}
});
//请求第一页数据;
addTask();
}
//启动异步任务;
private void addTask() {
MyTask task = new MyTask();
task.execute("");
}
class MyTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
//网络请求
return getDataFromHttp();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null && !s.equals("")) {
//解析从网络获取的数据
Gson gson = new Gson();
DataBean bean = gson.fromJson(s, DataBean.class);
if (bean != null) {
List<DataBean.ResultBean> resultBeen = bean.results;
if (resultBeen != null && resultBeen.size() > 0) {
//加载到listview上显示;
if (page > 1) {
adapter.addData(resultBeen);
//上拉加载更多时,将数据添加入数据库中;
addDb(resultBeen);
} else {
adapter.updateData(resultBeen);
// page==1时或者是第一次获取数据;或者是下拉刷新;只有在第一次获取数据时需要添加数据库
if(tag){
addDb(resultBeen);
tag=false;
}
}
listView.stopLoadMore();
listView.stopRefresh();
} else {
Toast.makeText(MainActivity.this, "返回数据列表为空!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "数据解析失败!", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, "网络获取数据失败!", Toast.LENGTH_LONG).show();
}
}
}
private String getDataFromHttp() {
try {
String path = URL_HOST + limit + "/" + page;
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
if (code == 200) {
InputStream is = connection.getInputStream();
String str = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
while ((str = reader.readLine()) != null) {
builder.append(str);
}
is.close();
reader.close();
System.out.println("page=" + page + " " + builder.toString());
return builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//将从网络获取的数据添加到数据库中;
private void addDb(List<DataBean.ResultBean> list) {
for (int i = 0; i < list.size(); i++) {
ContentValues values = new ContentValues();
values.put("title", list.get(i).title);
values.put("content", list.get(i).content);
db.insert("week3", null, values);
}
}
}
阅读全文
1 0
- iOS 异步加载刷新
- 异步刷新加载
- 刷新加载+异步线程
- listview异步加载图片,上拉刷新
- ajax异步加载 实现局部刷新
- Gallery异步加载图片和listView动态刷新
- 当心异步刷新后的脚本文件加载
- PullrefreshLibrary(PullToRefreshGridView)上拉刷新,下拉加载+异步AsyncTask(二)
- Android ListView 异步加载刷新(更多)的思路
- 导航栏 $_ajax异步局部刷新加载内容
- jsp局部刷新页面、异步加载页面方案
- 多线程GCD之图片异步加载主队列刷新UI
- 异步加载界面pjax 刷新界面里的部分内容
- 超级ListView,包括下拉刷新,自动翻页加载数据,异步下载、加载图片缓存等
- 刷新加载
- 刷新加载
- 刷新加载
- 加载刷新
- webpack3如何正确引用并使用jQuery库
- Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
- 服务器性能优化的正确姿势
- 游戏获取分数
- eclipse启动tomcat卡在Building new Hibernate SessionFactory
- 异步刷新加载
- LoadRunner常用用语
- C#集成rabbitmq发消息
- Android Studio学习基础篇二
- 打印字号转换(字号-px-磅)
- UVA
- ALV GRID中实现RadioButton单选按钮
- 文章标题
- python:pkg_resources.DistributionNotFound: The 'pip==1.5.4' distribution was not found ...