package zhanghaijiao.bawei.com.xlistview_demo;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.bawei.jane.mxlistview.view.XListView;
import com.google.gson.Gson;
0.
.
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 第一步:导入 mxlistview模块,更新构建工具
* 第二步:新建自己的module,添加模块依赖
*/
public class MainActivity extends AppCompatActivity {
private XListView xlv;
private int pageIndex=1;
private String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
//listview列表的集合
private List<ResultData.DataBean> data=new ArrayList<>();
private MyAdapter adapter;
//1:刷新 2:加载更多
private int operType=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.查找组件
xlv = findViewById(R.id.xlv);
//2.进行配置
xlv.setPullRefreshEnable(true);//支持下拉刷新
xlv.setPullLoadEnable(true);//支持上拉加载更多
//设置监听回调接口
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新
operType=1;
pageIndex=1;
url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
requestNetData();
}
@Override
public void onLoadMore() {//加载更多
operType=2;
pageIndex++;
url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
requestNetData();
}
});
//请求网络数据
requestNetData();
}
private void requestNetData() {
MyTask task=new MyTask();
task.execute(url);
}
class MyTask extends AsyncTask<String,Void,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){
InputStream inputStream = connection.getInputStream();
String s=streamToString(inputStream);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s!=null){
Gson gson=new Gson();
ResultData resultData = gson.fromJson(s, ResultData.class);
if(operType==1){
data.clear();//清空集合
}
//添加新数据集合到,原来的集合数据中
data.addAll(resultData.getData());
setListViewAdapter();
if(operType==1){//刷新
//关闭头视图
xlv.stopRefresh();
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timeStr = sformat.format(date);
xlv.setRefreshTime(timeStr);//设置刷新时间
}else {
//关闭footer视图
xlv.stopLoadMore();
}
}
}
}
/**
* 设置适配器
*/
public void setListViewAdapter(){
if(adapter==null){
adapter = new MyAdapter(data,MainActivity.this);
xlv.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();//直接刷新
}
}
public String streamToString(InputStream stream){
ByteArrayOutputStream outputStream=null;
try {
outputStream = new ByteArrayOutputStream();
byte[] bytes=new byte[1024];
int len;
while ((len=stream.read(bytes))!=-1){
outputStream.write(bytes,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
return outputStream.toString();
}
}
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.bawei.jane.mxlistview.view.XListView;
import com.google.gson.Gson;
0.
.
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 第一步:导入 mxlistview模块,更新构建工具
* 第二步:新建自己的module,添加模块依赖
*/
public class MainActivity extends AppCompatActivity {
private XListView xlv;
private int pageIndex=1;
private String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
//listview列表的集合
private List<ResultData.DataBean> data=new ArrayList<>();
private MyAdapter adapter;
//1:刷新 2:加载更多
private int operType=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.查找组件
xlv = findViewById(R.id.xlv);
//2.进行配置
xlv.setPullRefreshEnable(true);//支持下拉刷新
xlv.setPullLoadEnable(true);//支持上拉加载更多
//设置监听回调接口
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新
operType=1;
pageIndex=1;
url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
requestNetData();
}
@Override
public void onLoadMore() {//加载更多
operType=2;
pageIndex++;
url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;
requestNetData();
}
});
//请求网络数据
requestNetData();
}
private void requestNetData() {
MyTask task=new MyTask();
task.execute(url);
}
class MyTask extends AsyncTask<String,Void,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){
InputStream inputStream = connection.getInputStream();
String s=streamToString(inputStream);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s!=null){
Gson gson=new Gson();
ResultData resultData = gson.fromJson(s, ResultData.class);
if(operType==1){
data.clear();//清空集合
}
//添加新数据集合到,原来的集合数据中
data.addAll(resultData.getData());
setListViewAdapter();
if(operType==1){//刷新
//关闭头视图
xlv.stopRefresh();
Date date=new Date(System.currentTimeMillis());
SimpleDateFormat sformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timeStr = sformat.format(date);
xlv.setRefreshTime(timeStr);//设置刷新时间
}else {
//关闭footer视图
xlv.stopLoadMore();
}
}
}
}
/**
* 设置适配器
*/
public void setListViewAdapter(){
if(adapter==null){
adapter = new MyAdapter(data,MainActivity.this);
xlv.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();//直接刷新
}
}
public String streamToString(InputStream stream){
ByteArrayOutputStream outputStream=null;
try {
outputStream = new ByteArrayOutputStream();
byte[] bytes=new byte[1024];
int len;
while ((len=stream.read(bytes))!=-1){
outputStream.write(bytes,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
return outputStream.toString();
}
}