1.导入Module
导入Module之后要记得在APP文件下进行同步并导包
**2.接口,并实现里边的上拉下拉方法 **
Activity extends AppCompatActivity implements XListView.IXListViewListener
3.写出URL地址和定义一些数据
private String path = “http://www.xieast.com/api/news/news.php?page=1http://www.xieast.com/api/news/news.php?page=”;
private int num = 1;
private List<Bean.DataBean> list = new ArrayList<>();
4.开启线程写出HTTPURLconnection网络请求
private void newThread(final int num) {
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(path + num);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(5000);
if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){
String data = CharStreams.toString(new InputStreamReader(connection.getInputStream(), "UTF-8"));
Message message = Message.obtain();
message.obj = data;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
5.handler收到子线程发送过来的消息,解析数据,处理数据
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String obj = (String) msg.obj;
Gson gson = new Gson();
Bean bean = gson.fromJson(obj, Bean.class);
List<Bean.DataBean> dataBeans = bean.getData();
list.addAll(dataBeans);//将每次刷新的数据给这个新的集合
baseAdapter.setList(list); //调用方法
xListView.stopRefresh();//停止刷新
xListView.stopLoadMore();//停止加载更多
}
};
找控件设置适配器那一步
xListView = view.findViewById(R.id.xlistview);
baseAdapter = new MyBaseAdapter(getActivity());
xListView.setAdapter(baseAdapter);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(this);
newThread(1);
上拉下拉的时候刷新数据或加载更多
@Override
public void onRefresh() {
num=1;
list.clear();
newThread(1);
}
@Override
public void onLoadMore() {
num++;
newThread(num);
}
这里是我的类继承BaseAdapter
//重点要在这里写一个setList方法,就不用每次刷新适配器了
private List<Bean.DataBean> list = new ArrayList<>();
private Context context;
public MyBaseAdapter(Context context) {
this.context = context;
}
public void setList(List<Bean.DataBean> list){
this.list = list;
notifyDataSetChanged();
}