handler实现接口数据解析

应用:gson、Universal-Image-Loader、HttpUrlConnection请求网络

首先导入依赖:

gson :    compile ‘com.google.code.gson:gson:2.2.4
Universal-Image-Loader:

 compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5
进行相应的展示
 String path = 自定义的数据接口
    private ListView lv;
    private List<Bean.NewslistBean> list;
    private ByteArrayOutputStream outputStream;

    /***
     * new一个Hanlder
     */
    private Handler handler = new Handler(){

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            String json = (String) msg.obj;

            /*
            转换为json格式
             */
            Gson gson = new Gson();

            Bean bean = gson.fromJson(json, Bean.class);

            list = bean.getNewslist();

            /**
             * 设置适配器
             */
            MyAdapter adapter = new MyAdapter(MainActivity.this,list);

            lv.setAdapter(adapter);
        }
    };




    /**
     * handler传递数据信息
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.lv);

        new Thread(){
            @Override
            public void run() {
                super.run();

                String json = getData();

                Message msg = new Message();

                msg.obj=json;

                //handler传递数据
                handler.sendMessage(msg);
            }

        }.start();
    }




    /*
    网络请求
     */
    private String getData(){
        try {

            URL url = new URL(path);

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

             //得到请求方式
            connection.setRequestMethod("GET");

            //得到延迟时间
            connection.setConnectTimeout(3000);

            //得到请求码
            int responseCode = connection.getResponseCode();

           //判断是否成功
            if(responseCode==200){
                int len;

                byte[] b = new byte[1024*20];

                InputStream inputStream = connection.getInputStream();

                outputStream = new ByteArrayOutputStream();

                while ((len=inputStream.read(b))!=-1){
                    outputStream.write(b,0,len);
                }
            }
            return outputStream.toString();//返回数据
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;//返回空
    }

自定义一个类 实现全局

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        /*
        进行全局的图片配置
         */
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();

        ImageLoader loader = ImageLoader.getInstance();

        loader.init(configuration);
    }
}

自定义一个adapter包

在这个MyAdapter中书写数据

public class MyAdapter extends BaseAdapter {
    Context context;
    List<Bean.NewslistBean> list;

    /*
    得到传过来的数据
     */
    public MyAdapter(Context context,List<Bean.NewslistBean> list){
        this.context=context;
        this.list=list;
    }


    /**
     * 得到集合的长度
     * @return
     */
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

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

    /**
     * 优化
     * @param i
     * @param view
     * @param viewGroup
     * @return
     */
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if(view==null){
            view = View.inflate(context, R.layout.lv_item,null);
        }

        ImageView iv = view.findViewById(R.id.lv_iv);

        TextView tv = view.findViewById(R.id.lv_tv);

        String s = list.get(i).getPicUrl();

        /**
        *  调用ImageLoader
        */
        ImageLoader.getInstance().displayImage(s,iv);

        tv.setText(list.get(i).getTitle());

        return view;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值