网络请求 + imageloader

来源:互联网 发布:python 量化交易策略 编辑:程序博客网 时间:2024/05/21 09:17

网络请求 + imageloader


//异步任务

class MyTask extends AsyncTask<String, Integer, String> {
        @Override
        protected String doInBackground(String... params) {
            //从网络获取数据
            try {
                URL url = new URL(params[0]);
                System.out.println(params[0]+" llllllllll");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                int code = connection.getResponseCode();
                if (code == 200) {
                    InputStream inputStream = connection.getInputStream();
                    String str;
                    StringBuilder builder = new StringBuilder();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                    while ((str = reader.readLine()) != null) {
                        builder.append(str);
                    }
                    return builder.toString();
                }


            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

//更新UI
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //获取请求的数据
            if (s != null) {
                Gson gson = new Gson();
                DataBean bean = gson.fromJson(s, DataBean.class);
                if (bean != null) {
                  list  = bean.data;
                    if(list!=null){
                    MyAdapter adapter=new MyAdapter(MainActivity.this,list);
                    mylist.setAdapter(adapter);}

                }
            }
        }
    }


//ImageLoaderConfiguration:
是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置

getInstance()
得到ImageLoader的单例。通过双层是否为 null 判断提高性能
init(ImageLoaderConfiguration configuration)
初始化配置参数,参数configuration为ImageLoader的配置信息,包括图片最大尺寸、任务线程池、磁盘缓存、下载器、解码器等等。
实现中会初始化ImageLoaderEngine engine属性,该属性为任务分发器。



 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //设置初始化;
        ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(MainActivity.this);
        ImageLoader.getInstance().init(configuration);
        initView();
        String url = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
        MyTask task = new MyTask();
        task.execute(url);



//传值

     mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Intent intent=new Intent(MainActivity.this,DetailActivity.class);

        DataBean.ResultBean bean=list.get(position);//(DataBean.ResultBean)parent.getAdapter().getItem(position);

        intent.putExtra("img",bean.IMAGEURL);

        intent.putExtra("title",bean.TITLE);

        intent.putExtra("subtitle",bean.SUBTITLE);

        intent.putExtra("time",bean.SHOWTIME);

        intent.putExtra("name",bean.FROMNAME);
        startActivity(intent);


//跳转之后接值

 @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.detail_layout);
        initView();
        Intent intent=getIntent();
    
        String url=intent.getStringExtra("img");
        String title=intent.getStringExtra("title");
        String subtitle=intent.getStringExtra("subtitle");
        String time=intent.getStringExtra("time");
        String name=intent.getStringExtra("name");
        ImageLoader.getInstance().displayImage(url,detail_img);
        detail_name.setText(name);
        detail_title.setText(title);
        detail_subtitle.setText(subtitle);
        detail_time.setText(time);




阅读全文
2 0
原创粉丝点击