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);
}
}
}