Xlistview 实现上拉加载,下拉刷新,imageloder,接口回调

//MainActivity 页面
package bwie.com.zhoukao2;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

import bean.UserBean;
import bwie.com.adapter.MyAdapter;
import utils.HttpUtils;
import view.XListView;

public class MainActivity extends AppCompatActivity {
    private MyAdapter adapter;
    private XListView xlistview;
    private  String path="http://www.yulin520.com/a2a/forum/allTypeList?sign=376C5BFC22179A1B8FF3A86D4588B29F&pageSize=10&ts=1877785007&forumType=0&page=";
    private int page=1;
    private List<UserBean.DataBean> list=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
        getServiceData();
    }

    private void initview() {
        xlistview = (XListView) findViewById(R.id.xlistview);
        xlistview.setPullLoadEnable(true);
        xlistview.setPullRefreshEnable(true);
        xlistview.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                page=1;
                getServiceData();
            }

            @Override
            public void onLoadMore() {
                page+=1;
                getServiceData();
            }
        });
        //创建适配器
        adapter = new MyAdapter(MainActivity.this, list);
        xlistview.setAdapter(adapter);
    }

    public void getServiceData() {
        //定义网络接口地址
        String url=path+page;
        //调用网络
        HttpUtils httpUtils = HttpUtils.getinstance();
        httpUtils.getData(url);
        httpUtils.setjsonlisten(new HttpUtils.getjsonlisten() {

            @Override
            public void jsonlisten(String json) {
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(json, UserBean.class);
                List<UserBean.DataBean> data = userBean.getData();
                if (page==1) {
                    list.clear();
                }
                list.addAll(data);
                //刷新适配器
                adapter.notifyDataSetChanged();
                if (page == 1) {
                    xlistview.stopRefresh();
                }else {
                    xlistview.stopLoadMore();
                }
            }
        });
    }
}
//HttpUtils接口回调
package utils;

import android.os.AsyncTask;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import cz.msebera.android.httpclient.HttpResponse;
import cz.msebera.android.httpclient.client.HttpClient;
import cz.msebera.android.httpclient.client.methods.HttpGet;
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient;

/**
 * Created by 我 on 2018/7/15.
 */

public class HttpUtils {
    private static HttpUtils httpUtils;
    private getjsonlisten getjsonlisten;
    public static HttpUtils getinstance(){
        if (httpUtils==null){
            httpUtils = new HttpUtils();
        }
        return httpUtils;
    }
    public void getData(String url){
        MyAsycn myAsycn = new MyAsycn();
        myAsycn.execute(url);
    }

    private class MyAsycn extends AsyncTask<String,Void,String>{
        @Override
        protected String doInBackground(String... params) {
            HttpClient client=new DefaultHttpClient();
            HttpGet get=new HttpGet(params[0]);
            try {
                HttpResponse response = client.execute(get);
                int statusCode = response.getStatusLine().getStatusCode();
                if (statusCode==200) {
                    InputStream inputStream = response.getEntity().getContent();
                    ByteArrayOutputStream bos=new ByteArrayOutputStream();
                    byte[] buffer=new byte[1024];
                    int len=0;
                    while ((len=inputStream.read(buffer))!=-1) {
                        bos.write(buffer,0,len);
                    }
                    inputStream.close();
                    bos.close();
                    String s = bos.toString();
                    return s;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            getjsonlisten.jsonlisten(s);
        }
    }
    public interface getjsonlisten{
        public void jsonlisten(String json);
    }
    public void setjsonlisten(getjsonlisten getjsonlisten){
        this.getjsonlisten=getjsonlisten;
    }
}

//adapter
package bwie.com.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

import bean.UserBean;
import bwie.com.zhoukao2.R;

/**
 * Created by 我 on 2018/7/15.
 */

public class MyAdapter extends BaseAdapter{
    private Context context;
    private List<UserBean.DataBean> list;

    public MyAdapter(Context context, List<UserBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if (convertView==null) {
            convertView = View.inflate(context, R.layout.item_adapter, null);
            holder = new ViewHolder();
            holder.text_phone = (TextView) convertView.findViewById(R.id.text_phone);
            holder.text_title = (TextView) convertView.findViewById(R.id.text_title);
            holder.img = (ImageView) convertView.findViewById(R.id.img);
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.text_title.setText(list.get(position).getTitle());
        holder.text_phone.setText(list.get(position).getPhone());
        ImageLoader.getInstance().displayImage(list.get(position).getHeadImg(),holder.img);
        return convertView;
    }
    private class ViewHolder{
        ImageView img;
        TextView text_title;
        TextView text_phone;
    }
}
//加依赖和权限


猜你喜欢

转载自blog.csdn.net/nideyida1/article/details/81056218