public class MainActivity extends AppCompatActivity { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView)findViewById(R.id.lv); //使用异步加载图片 new MAsytack().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10"); } //创建MAsytack类 private class MAsytack extends AsyncTask<String,Void,String>{ private StringBuilder stringBuilder; private List<GsonBean.NewslistBean> newslist; @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //创建Gson串 Gson gson = new Gson(); //解析 GsonBean gsonBean = gson.fromJson(s, GsonBean.class); //获取到集合 newslist = gsonBean.getNewslist(); //设置适配器 lv.setAdapter(new MAdapter()); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } @Override protected String doInBackground(String... strings) { try { //获取路劲 URL url = new URL(strings[0]); //获取HttpURLConnection对象 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //获取请求码 int responseCode = urlConnection.getResponseCode(); //判断请求码是否等于200 if(responseCode==200) { //获取字节流 InputStream inputStream = urlConnection.getInputStream(); //使用buffer读取 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); //拼接字符串 stringBuilder = new StringBuilder(); //定义变量 String str = ""; //判断读取数据长度 while((str = bufferedReader.readLine())!=null) { //拼接 stringBuilder.append(str); } } //返回 return stringBuilder.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } private class MAdapter extends BaseAdapter { @Override public int getCount() { return newslist.size();//获取集合长度 } @Override public Object getItem(int i) { return newslist.get(i);//获取集合条目 } @Override public long getItemId(int i) { return i;//获取id } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; GsonBean.NewslistBean bean = newslist.get(i); if(view==null) { view = View.inflate(MainActivity.this, R.layout.item_lv, null); holder = new ViewHolder(); holder.imageView = (ImageView)view.findViewById(R.id.imageView); holder.textView = (TextView)view.findViewById(R.id.textView); holder.textView2 = (TextView)view.findViewById(R.id.textView2); view.setTag(holder); }else { holder= (ViewHolder) view.getTag(); } new MyAsytick(holder.imageView).execute(bean.getPicUrl()); holder.textView.setText(bean.getTitle()); holder.textView2.setText(bean.getCtime()); return view; } class ViewHolder{ ImageView imageView; TextView textView; TextView textView2; } private class MyAsytick extends AsyncTask<String,Void,Bitmap>{ private final ImageView img; private Bitmap bitmap; public MyAsytick(ImageView imageView) { this.img=imageView; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); //设置图片 img.setImageBitmap(bitmap); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } @Override protected Bitmap doInBackground(String... strings) { try { //获取路径 URL url=new URL(strings[0]); //获取HttpURLConnection对象 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // int responseCode = urlConnection.getResponseCode(); if(responseCode==200) { InputStream inputStream = urlConnection.getInputStream(); //使用BitmapFactory存图片 bitmap = BitmapFactory.decodeStream(inputStream); } return bitmap; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } } } } }
AsyncTack加载图片
最新推荐文章于 2021-05-28 17:45:33 发布