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; } }}
阅读全文
0 0
- AsyncTask的基本操作
- AsyncTask 的操作
- 关于asynctask的取消操作
- AsyncTask异步操作的使用
- 译文:Android中糟糕的AsyncTask之停止AsyncTask操作
- 译文:Android中糟糕的AsyncTask之停止AsyncTask操作
- Android线程操作AsyncTask的用法
- 为什么Android的AsyncTask不适合执行长时间操作的任务
- 为什么Android的AsyncTask不适合执行长时间操作的任务
- 为什么Android的AsyncTask不适合执行长时间操作的任务
- Android异步操作AsyncTask
- Android AsyncTask异步操作
- Android 异步操作AsyncTask
- Android 异步操作AsyncTask
- Android异步操作 AsyncTask
- Android 异步操作AsyncTask
- Android 异步操作AsyncTask
- Android AsyncTask异步操作
- 复制含有随机指针的链表
- idea .gitignore模板
- 机器学习实战——决策树(读书笔记)
- Orcale循环插入数据
- spaf算法求最短路径
- AsyncTask 的操作
- 关于系统的高可用性的一些见解
- mvn打包项目时跳过测试的两种方法
- 课堂作业
- 树状数组训练题2:SuperBrother打鼹鼠(vijos1512)
- C/C++ 第四周线性表(二)-- 项目四 猴子选大王
- Redis详解入门篇
- Hibernate与Jpa的关系
- 我理解的java流基础篇(三)