package com.example.demo;
import java.util.LinkedList;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import com.bwie.guoxinbo20160505.pullToRefresh.Bean;
import com.bwie.guoxinbo20160505.pullToRefresh.Bean.MyData;
import com.bwie.guoxinbo20160505.pullToRefresh.MyAdapter;
import com.bwie.guoxinbo20160505.pullToRefresh.PullToRefreshLayout;
import com.bwie.guoxinbo20160505.pullToRefresh.PullToRefreshLayout.OnRefreshListener;
import com.bwie.guoxinbo20160505.pullToRefresh.PullableListView;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
public class MainActivity extends Activity {
private PullToRefreshLayout layout;
private PullableListView listView;
private String url = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id=242&pn=0&rn=10";
private boolean flag=true;
private LinkedList<MyData> list2;
private LinkedList<MyData> list;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout = (PullToRefreshLayout) findViewById(R.id.layoutboke);
listView = (PullableListView) findViewById(R.id.listviboke);
new MyAsync().execute();
layout.setOnRefreshListener(new OnRefreshListener() {
// 刷新
@Override
public void onRefresh(PullToRefreshLayout pullToRefreshLayout) {
String url1 = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id=242&pn=10&rn=10";
getJson(url1, pullToRefreshLayout);
}
// 加载
@Override
public void onLoadMore(final PullToRefreshLayout pullToRefreshLayout) {
String url2 = "http://apis.juhe.cn/goodbook/query?key=9d6ef8c31647a206e05fcaff70527182&catalog_id=242&pn=20&rn=10";
getJson(url2, null);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED);
}
}, 2000);
}
});
}
// 获取数据
private void getJson( String url,final PullToRefreshLayout pullToRefreshLayout) {
HttpUtils utils = new HttpUtils();
utils.configResponseTextCharset("utf-8");
utils.send(HttpMethod.POST, url, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String json = arg0.result;
Gson gson = new Gson();
Bean bean = gson.fromJson(json, Bean.class);
// 证明是第一次请求网络
if (flag) {
list = bean.result.data;
adapter = new MyAdapter(MainActivity.this, list);
listView.setAdapter(adapter);
// gv_view.onRefreshComplete();
// pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED);
flag = false;
} else {
// 执行下拉刷新或者上拉加载的时候,进入此判断。通过判断boolean的值来判断是什么操作。
if (pullToRefreshLayout==null) {
// 上拉加载,加载出的数据在数据的底部。
list2 = bean.result.data;
for (MyData myData : list2) {
list.add(myData);
}
// gv_view.onRefreshComplete();
adapter.notifyDataSetChanged();
} else {
// 下拉刷新,刷新出来的数据在数据的顶部,之前的数据还在。
list2 = bean.result.data;
for (MyData myData : list2) {
list.addFirst(myData);
}
// gv_view.onRefreshComplete();
pullToRefreshLayout
.refreshFinish(PullToRefreshLayout.SUCCEED);
adapter.notifyDataSetChanged();
}
}
}
});
}
// 异步加载
class MyAsync extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
getJson(url, null);
super.onPostExecute(result);
}
}
}
比较美观的ListView下拉刷新上拉加载
最新推荐文章于 2024-03-07 18:03:10 发布
