HttpClient 请求网络实现xlistview

package bwie.com.xlistview;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import com.google.gson.Gson;
import com.loopj.android.http.HttpGet;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import adapter.MyAdapter;
import bean.UserBean;
import cz.msebera.android.httpclient.HttpResponse;
import cz.msebera.android.httpclient.client.HttpClient;
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient;
import view.XListView;

public class MainActivity extends AppCompatActivity {

    private List<UserBean.DataBean> lista=new ArrayList<>();
    private XListView xlistview;
    private int page =1;
    //定义网络
    String path="http://www.yulin520.com/a2a/forum/allTypeList?sign=376C5BFC22179A1B8FF3A86D4588B29F&pageSize=10&ts=1877785007&forumType=0&page=";

    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what==0) {
                xlistview.stopRefresh();
            }
            if(msg.what==1){
               // page++;
                new MyAsycnTask().execute(path+page);
                xlistview.stopLoadMore();
            }
        }
    };
    private TextView time;
    private List<UserBean.DataBean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        xlistview = (XListView) findViewById(R.id.xlistview);
        //可以往上划,加载数据,上拉加载
        xlistview.setPullLoadEnable(true);
        //下拉刷新
        xlistview.setPullRefreshEnable(true);
        //设置监听
        xlistview.setXListViewListener(new XListView.IXListViewListener() {
            //下拉刷新
            @Override
            public void onRefresh() {
                page=1;
                new MyAsycnTask().execute(path + page);
                //停止刷新
                handler.sendEmptyMessageDelayed(0,2000);
                long l = System.currentTimeMillis();
                Date date=new Date(l);
                SimpleDateFormat format=new SimpleDateFormat("HH:mm");
                xlistview.setRefreshTime(format.format(date));
            }
            //上拉加载
            @Override
            public void onLoadMore() {
                page++;
                handler.sendEmptyMessageDelayed(1 ,2000);
                //停止加载更多
            }
        });
        //调用网络
        new MyAsycnTask().execute(path + page);
    }


    //网络获取
    private class MyAsycnTask extends AsyncTask<String,Void,String>{

        private MyAdapter adapter;

        @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=-1;
                    while ((len=inputStream.read(buffer))!=-1){
                        bos.write(buffer,0,len);
                    }
                    inputStream.close();
                    bos.close();
                    String s = bos.toString();
                    Log.i("aaa",s.toString());
                   return s;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            UserBean userBean = gson.fromJson(s, UserBean.class);
            List<UserBean.DataBean> data = userBean.getData();
            if (page==1){
                lista.clear();
            }
            lista.addAll(data);
            if (adapter==null) {
                adapter = new MyAdapter(MainActivity.this, lista);
                xlistview.setAdapter(adapter);
            }else {
                adapter.notifyDataSetChanged();
            }
        }
    }
}

package 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.xlistview.R;

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

public class MyAdapter extends BaseAdapter{
    private Context context;
    private List<UserBean.DataBean> list;
    private final int TYPE_0=0;
    private final int TYPE_1=1;
    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 int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        int p = position % 2;
        if (p==0) {
            return TYPE_0;
        }else {
            return TYPE_1;
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        int type = getItemViewType(position);
        if (convertView==null) {
            if (type==0) {
                convertView = View.inflate(context, R.layout.item_adapter, null);
                holder = new ViewHolder();
                holder.iv = (ImageView) convertView.findViewById(R.id.iv);
                holder.text_title = (TextView) convertView.findViewById(R.id.text_title);
                holder.text_phone = (TextView) convertView.findViewById(R.id.text_phone);
                convertView.setTag(holder);
            }else {
                convertView = View.inflate(context, R.layout.item_adapter, null);
                holder = new ViewHolder();
                holder.text_title = (TextView) convertView.findViewById(R.id.text_title);
                holder.text_phone = (TextView) convertView.findViewById(R.id.text_phone);
                convertView.setTag(holder);
            }
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.text_title.setText(list.get(position).getTitle());
        holder.text_phone.setText(list.get(position).getPhone());
        if (type==0){
            ImageLoader.getInstance().displayImage(list.get(position).getHeadImg(),holder.iv);
        }
        return convertView;
    }
    public class ViewHolder{
        ImageView iv;
        TextView text_title;
        TextView text_phone;
    }
}


猜你喜欢

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