public class MainActivity extends AppCompatActivity {
private XListView x_list;
//页数
private int pageIndex = 1;
//操作的类型 1:下拉刷新 2:上拉加载
private int type = 1;
// 给Bean包设置一个集合
private List<MyBean.DataBean> list = new ArrayList<>();
private String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List_Baseadapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
// 设置上拉加载
x_list.setPullLoadEnable(true);
//设置支持下拉刷新
x_list.setPullRefreshEnable(true);
//给xlist获得的空间设置一个点击事件
x_list.setXListViewListener(new XListView.IXListViewListener() {
// 刷新
@Override
public void onRefresh() {
type = 1;
//重新请求第一页的数据 10条数据
pageIndex = 1;
String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/" + pageIndex;
new asyncTask().execute(path);
}
//加载
@Override
public void onLoadMore() {
type = 2;
pageIndex++;
//进行地址的拼接
String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/" + pageIndex;
//执行异步请求
new asyncTask().execute(path);
}
});
new asyncTask().execute(path);
}
//继承异步
class asyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//获取网络
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int responseCode = connection.getResponseCode();
Log.d("SSS", "++++++++++++++++++" + responseCode);
// 判断是否是200响应码
if (responseCode == 200) {
//解析
InputStream inputStream = connection.getInputStream();
String s = streamToString(inputStream, "utf-8");
Log.d("SSS", "+++++sssss++++" + s);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
MyBean myBean = gson.fromJson(s, MyBean.class);
// List<MyBean.DataBean> data = myBean.getData();
//Log.d("SSS", "+++++MY++++" + data.toString());
if (type == 1) {//代表刷新
//如果是刷新的话
list.clear();//清除原有的数据
list.addAll(myBean.getData());//添加新的数据
setAdapter();
//关闭xlistview的头部视图--延迟关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
x_list.stopRefresh();//关闭
// 获得此时此刻时间
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(date);
x_list.setRefreshTime(s);//设置刷新时间
}
}, 1000);
} else if (type == 2) {//代表加载更多
//得到数据
list.addAll(myBean.getData());//datas.addAll(0,result.getData());//将新请求的数据添加到集合的最前面
//设置适配器
setAdapter();
//关闭xlistview的底部视图--延迟关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
x_list.stopLoadMore();
}
}, 1000);
} else {
}
}
}
public void setAdapter() {
if (adapter == null) {
Log.d("SSSSSSSSSSSSSS", "+++++++listtttttt++++++++" + list);
adapter = new List_Baseadapter(MainActivity.this,list);
x_list.setAdapter(adapter);
} else {
//否则刷新适配器
adapter.notifyDataSetChanged();
}
}
// 解析数据
private String streamToString(InputStream inputStream, String s) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String a = "";
StringBuffer stringBuffer = new StringBuffer();
while ((a = bufferedReader.readLine()) != null) {
stringBuffer.append(a);
}
bufferedReader.close();
return stringBuffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
//获得控件
private void initView() {
x_list = (XListView) findViewById(R.id.x_list);
}
}
private XListView x_list;
//页数
private int pageIndex = 1;
//操作的类型 1:下拉刷新 2:上拉加载
private int type = 1;
// 给Bean包设置一个集合
private List<MyBean.DataBean> list = new ArrayList<>();
private String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List_Baseadapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
// 设置上拉加载
x_list.setPullLoadEnable(true);
//设置支持下拉刷新
x_list.setPullRefreshEnable(true);
//给xlist获得的空间设置一个点击事件
x_list.setXListViewListener(new XListView.IXListViewListener() {
// 刷新
@Override
public void onRefresh() {
type = 1;
//重新请求第一页的数据 10条数据
pageIndex = 1;
String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/" + pageIndex;
new asyncTask().execute(path);
}
//加载
@Override
public void onLoadMore() {
type = 2;
pageIndex++;
//进行地址的拼接
String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/" + pageIndex;
//执行异步请求
new asyncTask().execute(path);
}
});
new asyncTask().execute(path);
}
//继承异步
class asyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//获取网络
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int responseCode = connection.getResponseCode();
Log.d("SSS", "++++++++++++++++++" + responseCode);
// 判断是否是200响应码
if (responseCode == 200) {
//解析
InputStream inputStream = connection.getInputStream();
String s = streamToString(inputStream, "utf-8");
Log.d("SSS", "+++++sssss++++" + s);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
MyBean myBean = gson.fromJson(s, MyBean.class);
// List<MyBean.DataBean> data = myBean.getData();
//Log.d("SSS", "+++++MY++++" + data.toString());
if (type == 1) {//代表刷新
//如果是刷新的话
list.clear();//清除原有的数据
list.addAll(myBean.getData());//添加新的数据
setAdapter();
//关闭xlistview的头部视图--延迟关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
x_list.stopRefresh();//关闭
// 获得此时此刻时间
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(date);
x_list.setRefreshTime(s);//设置刷新时间
}
}, 1000);
} else if (type == 2) {//代表加载更多
//得到数据
list.addAll(myBean.getData());//datas.addAll(0,result.getData());//将新请求的数据添加到集合的最前面
//设置适配器
setAdapter();
//关闭xlistview的底部视图--延迟关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
x_list.stopLoadMore();
}
}, 1000);
} else {
}
}
}
public void setAdapter() {
if (adapter == null) {
Log.d("SSSSSSSSSSSSSS", "+++++++listtttttt++++++++" + list);
adapter = new List_Baseadapter(MainActivity.this,list);
x_list.setAdapter(adapter);
} else {
//否则刷新适配器
adapter.notifyDataSetChanged();
}
}
// 解析数据
private String streamToString(InputStream inputStream, String s) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String a = "";
StringBuffer stringBuffer = new StringBuffer();
while ((a = bufferedReader.readLine()) != null) {
stringBuffer.append(a);
}
bufferedReader.close();
return stringBuffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
//获得控件
private void initView() {
x_list = (XListView) findViewById(R.id.x_list);
}
}