HTTP网络请求listview展示

package com.example.day02_http_listview01;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private final int UPDATE_UI = 1;
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case UPDATE_UI:
                    List<ContentResponseBean.DataBean> datas = (List<ContentResponseBean.DataBean>) msg.obj;
                    mAdaper.setmDatas(datas);
                    break;
            }
        }
    };
    private ContentAdaper mAdaper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取资源id
        listView = findViewById(R.id.lv_view);
        mAdaper = new ContentAdaper(this);
        listView.setAdapter(mAdaper);
        if(!NetWork.hasNetWork(MainActivity.this)){
            Toast.makeText(MainActivity.this,"当前网络不可用",Toast.LENGTH_SHORT).show();
        }
        new Thread(new Runnable() {
            @Override
            public void run() {
                requestData();
            }

        }).start();
    }
    private String urlSrt = "http://apis.juhe.cn/cook/query?key=b0d2db4c246d037654adb1d5080ea06d&menu=%E8%A5%BF%E7%BA%A2%E6%9F%BF&rn=10&pn=3";
    private void requestData() {

        try {
            //定义url地址
            URL url = new URL(urlSrt);
            //打开连接
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            //设置请求类型
            urlConnection.setRequestMethod("GET");
            //设置超时
            urlConnection.setReadTimeout(5000);
            urlConnection.setReadTimeout(5000);
            //得到请求值
            int responseCode = urlConnection.getResponseCode();
            if(responseCode == 200){
                String json = strim2String(urlConnection.getInputStream());
                //得到gson
                Gson gson = new Gson();
                ContentResponseBean contentResponseBean = gson.fromJson(json, ContentResponseBean.class);
                handler.sendMessage(handler.obtainMessage(UPDATE_UI,contentResponseBean.getResult().getData()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private String strim2String(InputStream is) throws IOException {
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        StringBuilder builder = new StringBuilder();
        for (String tem = br.readLine();tem!=null;tem = br.readLine()){
            builder.append(tem);
        }
        return builder.toString();
    }
}

package com.example.day02_http_listview01;

import java.util.List;

public class ContentResponseBean {
    public Result result;

    public Result getResult() {
        return result;
    }

    public void setResult(Result result) {
        this.result = result;
    }

    public class Result{
        public List<DataBean> data;

        public List<DataBean> getData() {
            return data;
        }

        public void setData(List<DataBean> data) {
            this.data = data;
        }
    }
    public class DataBean{
        public String id;
        public String title;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
}

package com.example.day02_http_listview01;

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

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

public class ContentAdaper extends BaseAdapter {
    private List<ContentResponseBean.DataBean> mDatas;
    private Context mContext;

    public ContentAdaper(Context mContext) {
        this.mContext = mContext;
        //出始化
        mDatas = new ArrayList<>();
    }
    public void setmDatas(List<ContentResponseBean.DataBean> mDatas){
        this.mDatas = mDatas;
        notifyDataSetChanged();
    }
    @Override
    public int getCount() {
        return mDatas.size();
    }

    @Override
    public ContentResponseBean.DataBean getItem(int position) {
        return mDatas.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null){
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item,parent,false);
            holder = new ViewHolder();
            holder.mImage = convertView.findViewById(R.id.image);
            holder.mText = convertView.findViewById(R.id.text);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.mText.setText(getItem(position).getTitle());
        return convertView;
    }
    //创建寄存器
    class ViewHolder{
        private ImageView mImage;
        private TextView mText;
    }
}

猜你喜欢

转载自blog.csdn.net/guoxinyu1207/article/details/83590184