使用异步请求网络数据
来源:互联网 发布:淘宝网注册支付宝 编辑:程序博客网 时间:2024/05/17 06:35
//主界面(包括优化Listview)
import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;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 com.google.gson.Gson;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView lv; private List<StudentBean.NewslistBean> list; private MyAdapter myAdapter; private TextView mTV; private ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); //创建集合 list = new ArrayList<StudentBean.NewslistBean>(); //获取笛地址 intData(); myAdapter = new MyAdapter(); } //获取地址 private void intData() {
//网络地址(直接更换) new MyAsyncTaskString().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10"); } //适配器 class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view==null){ view= View.inflate(MainActivity.this,R.layout.init_list,null); mTV = view.findViewById(R.id.tv); img = view.findViewById(R.id.img); } //添加图片到listview new MyAsyncTaskBitmap(img).execute(list.get(i).getPicUrl()); mTV.setText(list.get(i).getTitle()); return view; } } //获取图片 class MyAsyncTaskBitmap extends AsyncTask<String,Void,Bitmap>{ ImageView img; public MyAsyncTaskBitmap(ImageView img) { this.img = img; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Bitmap doInBackground(String... strings) { return new User().getBitmap(strings[0]); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); img.setImageBitmap(bitmap); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } } //获取String class MyAsyncTaskString extends AsyncTask<String,Void,String>{ @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... strings) { return new User().getJsonString(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); StudentBean studentBean = gson.fromJson(s, StudentBean.class); list = studentBean.getNewslist(); lv.setAdapter(myAdapter); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } }}
//解析数据
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;/** * author:Created by WangZhiQiang on 2017/9/5. */public class User { //解析String public String getJsonString(String string){ try { URL url = new URL(string); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int code = urlConnection.getResponseCode(); if(code==200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String temp=""; while ((temp=bufferedReader.readLine())!=null){ stringBuilder.append(temp); } String s = stringBuilder.toString(); return s; } } catch (Exception e) { e.printStackTrace(); } return null; } //解析图片(Bitmap) public Bitmap getBitmap(String string){ try { URL url = new URL(string); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int code = urlConnection.getResponseCode(); if(code==200){ InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } catch (Exception e) { e.printStackTrace(); } return null; }}//主界面布局<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.aaa.zhoukao_lian1.MainActivity"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content"/></android.support.constraint.ConstraintLayout>//Listview布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>//网络权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>
阅读全文
0 0
- 使用异步请求网络数据
- 网络异步请求数据
- 异步请求网络数据
- 安卓网络请求数据,使用异步任务
- 使用AQuery异步请求网络
- Android中异步任务请求网络数据
- okhttp 第三方 网络数据请求 异步get请求 和异步post请求 同步请求
- 【iOS-网络】使用异步的post请求
- Android使用AsyncTask异步请求网络
- Android--使用原生技术实现ListView(原生技术实现网络异步请求,解析json数据)
- 网络编程_get_异步-请求_获取网络数据
- 网络编程_post_异步-请求_获取网络数据
- 【jQuery】使用load()方法异步请求数据
- 【AJAX】使用load()方法异步请求数据
- 使用Ajax异步加载请求JSON数据
- 使用load()方法异步请求数据
- iOS 网络请求数据 同步请求、异步请求、GET、POST请求
- 网络异步请求(2)
- RMQ
- [简单逻辑学]逻辑学的基本原理——灰色地带及人为灰色地带
- 《UNIX环境高级编程》笔记1--errno是否是线程安全的?
- 【leaflet】 leaflet移除地图上所有marker(layers)
- PHP进阶(第七弹:数据库操作)
- 使用异步请求网络数据
- javascript数组小知识
- Linus实验楼笔记——第10节:命令执行顺序控制与管道
- centos下安装Tomcat服务器的实践
- engauge digitizer
- poj 2253
- Qt学习之路(24): QPainter
- ssh+filter+cookie实现自动登陆
- [编程题] 回文序列