package com.example.day8_lianxi2;
import android.app.ActivityManager;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.bawei.xlistviewlib.view.XListView;
import com.example.adapter.MyAdapter;
import com.example.bean.DataInfo;
import com.google.gson.Gson;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
private XListView list;
private String api = "http://gank.io/api/data/all/20/";
//出来就加载
private boolean state_load = true;
//显示上一页
private boolean state_pull = false;
//加载更多
private boolean state_push = false;
//定义页数
private int page = 2;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = findViewById(R.id.list);
//允许上拉加载
list.setPullLoadEnable(true);
list.setPullRefreshEnable(true);
//设置回调
list.setXListViewListener(this);
new loadData().execute(api+page);
}
//显示上次刷新时间
@Override
public void onRefresh() {
changeState(false,true,false);
//请求前一页数据
if (page > 1){
page--;
new loadData().execute(api+page);
}
}
private void changeState(boolean b, boolean b1, boolean b2) {
state_load = b;
state_pull = b1;
state_push = b2;
}
@Override
public void onLoadMore() {
changeState(false,false,true);
page++;
new loadData().execute(api+page);
}
private class loadData extends AsyncTask<String,Integer,String>{
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
if (connection.getResponseCode()==200){
return StringStream(connection.getInputStream());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private String StringStream(InputStream inputStream) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int len = 0;
try {
while (( len = inputStream.read(bytes))!=-1){
bos.write(bytes,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}
return new String(bos.toByteArray());
}
//写解析
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
DataInfo dataInfo = gson.fromJson(s, DataInfo.class);
//Log.i("aaa",s);
if (state_load){
adapter = new MyAdapter(dataInfo.getResults(), MainActivity.this);
list.setAdapter(adapter);
}else if (state_pull){//刷新上面的
adapter.add(dataInfo.getResults());
//停止刷新
list.stopRefresh(true);
}else{
adapter.loadMore(dataInfo.getResults());
//停止加载
list.stopLoadMore();
}
}
}
}
import android.app.ActivityManager;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.bawei.xlistviewlib.view.XListView;
import com.example.adapter.MyAdapter;
import com.example.bean.DataInfo;
import com.google.gson.Gson;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
private XListView list;
private String api = "http://gank.io/api/data/all/20/";
//出来就加载
private boolean state_load = true;
//显示上一页
private boolean state_pull = false;
//加载更多
private boolean state_push = false;
//定义页数
private int page = 2;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = findViewById(R.id.list);
//允许上拉加载
list.setPullLoadEnable(true);
list.setPullRefreshEnable(true);
//设置回调
list.setXListViewListener(this);
new loadData().execute(api+page);
}
//显示上次刷新时间
@Override
public void onRefresh() {
changeState(false,true,false);
//请求前一页数据
if (page > 1){
page--;
new loadData().execute(api+page);
}
}
private void changeState(boolean b, boolean b1, boolean b2) {
state_load = b;
state_pull = b1;
state_push = b2;
}
@Override
public void onLoadMore() {
changeState(false,false,true);
page++;
new loadData().execute(api+page);
}
private class loadData extends AsyncTask<String,Integer,String>{
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
if (connection.getResponseCode()==200){
return StringStream(connection.getInputStream());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private String StringStream(InputStream inputStream) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int len = 0;
try {
while (( len = inputStream.read(bytes))!=-1){
bos.write(bytes,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}
return new String(bos.toByteArray());
}
//写解析
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
DataInfo dataInfo = gson.fromJson(s, DataInfo.class);
//Log.i("aaa",s);
if (state_load){
adapter = new MyAdapter(dataInfo.getResults(), MainActivity.this);
list.setAdapter(adapter);
}else if (state_pull){//刷新上面的
adapter.add(dataInfo.getResults());
//停止刷新
list.stopRefresh(true);
}else{
adapter.loadMore(dataInfo.getResults());
//停止加载
list.stopLoadMore();
}
}
}
}