AsyncTask 的操作

来源:互联网 发布:xp连接win7网络打印机 编辑:程序博客网 时间:2024/06/03 05:06

1--- 联网权限


2 -- 主线程调用AsyncTask类实例调用

/**
         * 1  MAsyncTask在主线程实例化;
         *  2 doInBackground在子线程,会把子线程请求的数据发送给在主线程运行的方法(onPostExecute)
         *  3 底层原理是Handler+Thread;
         */
        new MAsyncTask().execute(urlString);


3--- 编写AsyncTask类;

要求:

1.   主页面使用ListView显示内容(10分)

2.   进入页面之后判断网络状态是否可用(10分)

3.   当页面不可用时弹出吐司提示,页面可用时使用网络加载数据(10分)

4.   实例化AsyncTask的对象并重写其中4个方法(10分)

5.   使用HttpURLConnection创建网络请求,创建连接对象并返回网络数据(10分)

6.   在完成的回调方法中解析获取到的数据(10分)

7.   创建列表的适配器,传入类型为解析后的数据类型(10分)

8.   完成适配器的优化和刷新(10分)

9.   适配器中展示图片的时候图片地址(image_url字段)前面加上”http:”再做展示(10分)

package com.example.rk112;import android.graphics.Bitmap;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.example.rk112.javabeab.Itoos;import com.example.rk112.javabeab.Utils;import com.example.rk112.javabeab.bean;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView lv;    //路径    private String Urlhttp = "https://www.toutiao.com/api/pc/focus/";//集合    List<com.example.rk112.javabeab.bean.DataBean.PcFeedFocusBean> list=new ArrayList<com.example.rk112.javabeab.bean.DataBean.PcFeedFocusBean>();    private Myadapet myadapet;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);//获取控件        lv = (ListView) findViewById(R.id.lv);//实例化适配器        myadapet = new Myadapet();//获取网络类型        int netype = Utils.getNetype(this); //是否有网        if (netype !=-1) {            //获取适配器            lv.setAdapter(myadapet);            //实力化类并执行;            new Myasyntask().execute(Urlhttp);//Urlhttp路径        } else {            Toast.makeText(this, "没有网络", Toast.LENGTH_SHORT).show();        }        ;    }    class Myasyntask extends AsyncTask<String, Void, String> {     //子线程运行的方法        @Override        protected String doInBackground(String... strings) {            //strings数组            String jiexi = strings[0];            //实力化解析的方法类            String ioss = Itoos.ioss(jiexi);            return ioss;        }        @Override//回调成功的方法        protected void onPostExecute(String s) {// s就是回调的是ioss            super.onPostExecute(s);           //实力化gson            Gson g = new Gson();             //获取解析的类            bean bean = g.fromJson(s, bean.class);//bean.class类            //获取data类            com.example.rk112.javabeab.bean.DataBean data = bean.getData();            //获取pc_feed_focus数组            List<com.example.rk112.javabeab.bean.DataBean.PcFeedFocusBean> pc_feed_focus =                    data.getPc_feed_focus();            //pc_feed_focus集合放入list的集合            list.addAll(pc_feed_focus);           //刷新            myadapet.notifyDataSetChanged();        }    }   //获取图片的Asyntask的类//    1.String :Url路径//    2.Void :进度//    3.Bitmap :图片    class Myasyntaskimag extends AsyncTask<String, Void, Bitmap>{        ImageView img;      //有参构造        public Myasyntaskimag(ImageView img) {            this.img=img;        }        @Override        protected Bitmap doInBackground(String... strings) {            String string = strings[0];            Bitmap bit = Itoos.bit(string);            return bit;        }        @Override        protected void onPostExecute(Bitmap bitmap) {            super.onPostExecute(bitmap);            img.setImageBitmap(bitmap);        }    }   class Myadapet extends  BaseAdapter{       @Override       public int getCount() {           return list.size();       }       @Override       public Object getItem(int i) {           return null;       }       @Override       public long getItemId(int i) {           return 0;       }       @Override       public View getView(int i, View view, ViewGroup viewGroup) {           if(view==null){               view=View.inflate(getApplicationContext(),R.layout.f1,null);           }           ImageView img =(ImageView) view.findViewById(R.id.img);           TextView tv = (TextView)view.findViewById(R.id.tv);           tv.setText(list.get(i).getTitle());             //实力化获取图片的Asyntask的类并把图片控件传过去            new Myasyntaskimag(img).execute("http:"+list.get(i).getImage_url());//"http:"+list.get(i).getImage_url()路径           return view;       }   }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 药流半月同房第二天大出血怎么办 口臭想让它变得不臭怎么办 来单位干了几天不满意想离职怎么办 药流吃药期间吃什么吐什么怎么办 养狗家里味道大怎么办养花有用吗 第一天上班站的脚疼怎么办 入职没有人事所需要的证书怎么办 入职第一天后不想去了怎么办 警察在执法过程中殴打群众怎么办 肾结石打了3天针痛得厉害怎么办 征兵体检过了到部队退兵怎么办 圆通快递要求退回结果被签收怎么办 新生儿蛋蛋淹了破皮了怎么办 要是和同学玩的时候打到睾丸怎么办 睾丸撞了一下里面碎了怎么办 睾丸被蚊子咬了挠坏流水疼怎么办 沐浴乳大量的灌注到尿道里怎么办 当电脑显示有文件损害时怎么办? 电脑上的压缩包手机上打不开怎么办 第五人格多酷账号退出了怎么办 更新显卡驱动时屏幕关闭了怎么办 不知道杯孕做了两次C丁怎么办 小说签约后更不到要求的字数怎么办 电脑中了感染病毒杀不干净怎么办 电脑下载的软件有病毒了怎么办 电脑强制关机后开不了机怎么办 受刺激后出现精神异常该怎么办 当屏幕出现暂时无法移动时怎么办 英雄联盟欧服连接不上服务器怎么办 试客联盟认证手机号成空号了怎么办 汽车脚垫不贴合翘起来了怎么办 版权保护迅雷下载不了的资源怎么办 30岁在外地城市找不到工作怎么办 新买的苹果爱拍充不进去电是怎么办 绝地求生东南亚服匹配不到人怎么办 电脑卡住了怎么办鼠标也点不动 幽灵行动荒野没有主线任务了怎么办 拼多多购买的东西下架了怎么办 电脑版的荒野行动玩的时候卡怎么办 欧洲卡车模拟2气压过低怎么办 word页眉和正文有段距离怎么办