获取网络图片展示到ListView上
来源:互联网 发布:php 接口开发框架 编辑:程序博客网 时间:2024/06/10 02:09
请求网络工具类
package com.wzq.listviewimage;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* NetWorkUtil是我们自己封装的请求网络工具类
* 可以请求json字符串并返回
* 可以请求图片并返回
*/
public class NetWorkUtil {private int responseCode;/** * 获取图片并返回; * @param urlString * @return */public Bitmap getNetImage(String urlString){ try { //得到URL对象,这个对象可以打开连接 URL url = new URL(urlString); //打开连接,HttpURLConnection:是URLConnection的子类;子类的方法比较多;都用子类 HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); //服务器返回的状态码 int responseCode = urlConnection.getResponseCode(); //请求成功 if (responseCode == 200){ InputStream inputStream = urlConnection.getInputStream(); //BitmapFactory类封装了好多关于图片处理的方法; Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; }else { Log.e("wzq请求图片","responseCode:"+ responseCode); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null;}/** * 请求json字符串并返回, * @param urlString url * @return json字符串 */public String getNetString(String urlString){ try { //得到URL对象,这个对象可以打开连接 URL url = new URL(urlString); //打开连接,HttpURLConnection:是URLConnection的子类;子类的方法比较多;都用子类 HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); //服务器返回的状态码 int responseCode = urlConnection.getResponseCode(); //请求成功 if (responseCode == 200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String stringTemp = ""; while ((stringTemp = bufferedReader.readLine()) != null) { stringBuilder.append(stringTemp); } String result = stringBuilder.toString(); Log.e("wzq请求json", "result:" + result); return result; }else { Log.e("wzq","responseCode:"+ responseCode); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }}
封装Bean类
package com.wzq.listviewimage;
import java.util.List;
public class Student {
private String info;private int status;private List<DataBean> data;public String getInfo() { return info;}public void setInfo(String info) { this.info = info;}public int getStatus() { return status;}public void setStatus(int status) { this.status = status;}public List<DataBean> getData() { return data;}public void setData(List<DataBean> data) { this.data = data;}public static class DataBean { private String news_id; private String news_summary; private String news_title; private String pic_url; public String getNews_id() { return news_id; } public void setNews_id(String news_id) { this.news_id = news_id; } public String getNews_summary() { return news_summary; } public void setNews_summary(String news_summary) { this.news_summary = news_summary; } public String getNews_title() { return news_title; } public void setNews_title(String news_title) { this.news_title = news_title; } public String getPic_url() { return pic_url; } public void setPic_url(String pic_url) { this.pic_url = pic_url; } }}
主界面
package com.wzq.listviewimage;
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 com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
/**
* Gson依赖:compile ‘com.google.code.gson:gson:2.8.1’
*/
public class MainActivity extends AppCompatActivity {private ListView lv;List<Student.DataBean> lists = new ArrayList<>();private MAdapter mAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); mAdapter = new MAdapter(); initData();}/** * 请求网络数据 */private void initData() { //记得要在子线程中写 new MAsyncTaskString().execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");}class MAdapter extends BaseAdapter { @Override public int getCount() { return lists.size(); } @Override public Object getItem(int i) { return lists.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View containerView, ViewGroup viewGroup) { View view = View.inflate(MainActivity.this, R.layout.list_item, null); ImageView iv = (ImageView) view.findViewById(R.id.iv); //把图片url传递给asyncTask new MAsyncTaskImage(iv).execute(lists.get(i).getPic_url()); return view; }}/** * alt+insert 自动选择要实现的方法等等 * 第一个参数表示要执行的任务通常是网络的路径 * 第二个参数表示进度Integer * 第三个参数表示任务执行的返回结果 */ //请求图片class MAsyncTaskImage extends AsyncTask<String, Void, Bitmap> { ImageView iv; public MAsyncTaskImage(ImageView imageView) { this.iv = imageView; } //这个是请求网络之前的调用的方法,也是最先调用的方法,可以初始化一些ui等;这个方法是在主线程里运行的 @Override protected void onPreExecute() { super.onPreExecute(); } /** * String... strings--->这个是可变参数; * 这个方法是在后台执行的,不能更新ui,是子线程 * 这个方法的返回值会返回给 */ @Override protected Bitmap doInBackground(String... strings) { return new NetWorkUtil().getNetImage(strings[0]); } /** * 这个方法是运行在主线程的 * 当doInBackground执行完, 会自动回调这个方法,来更新ui; * @param bitmap */ @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); iv.setImageBitmap(bitmap); } //主线程可以更新ui; @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); }}//请求字符串class MAsyncTaskString extends AsyncTask<String, Void, String> { //这个是请求网络之前的调用的方法,也是最先调用的方法,可以初始化一些ui等;这个方法是在主线程里运行的 @Override protected void onPreExecute() { super.onPreExecute(); } /** * String... strings--->这个是可变参数; * 这个方法是在后台执行的,不能更新ui,是子线程 * 这个方法的返回值会返回给 */ /** * 调用urlconnectiong获取json字符串 * @param strings * @return */ @Override protected String doInBackground(String... strings) { return new NetWorkUtil().getNetString(strings[0]); } /** * 这个方法是运行在主线程的 * 当doInBackground执行完, 会自动回调这个方法,来更新ui; */ @Override protected void onPostExecute(String netString) { super.onPostExecute(netString); Gson gson = new Gson(); Student student = gson.fromJson(netString, Student.class); lists = student.getData(); lv.setAdapter(mAdapter); } //主线程可以更新ui; @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } }}
布局
<ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="400dp" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="8dp"></ListView>
item布局
<ImageView 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:id="@+id/iv" android:layout_width="match_parent" android:layout_height="80dp"/>
记得加联网权限和Gson依赖
- 获取网络图片展示到ListView上
- 网络请求并展示到ListView上
- 从网络上获取ImageLoader并且ListView上展示
- 从网络上获取ImageLoader并且ListView上展示
- rikao3将数据图片展示到listview上
- 解析网络json数据并展示到ListView上
- 获取服务器图片显示到listview上
- 网络请求展示到listview
- AsyncTask 网络获取图片和Json数据加载到ListView上
- 获取网络上的图片 显示在listview上面
- 通过框架 把网络图片加载到ListView上
- 异步加载数据,图片,展示到listView
- Android_请求网络数据展示到Listview
- 从网络获取数据,并绑定到listview上
- 网络上获取图片
- 网络获取图片和ListView
- 获取网络图片缓存并展示
- 获取本地图片展示在页面上
- 剑指offer——51.构建乘积数组
- lgov的覆盖率文件语法
- java过滤器中调用spring管理的接口
- 友盟QQ登录分享
- 自己遇到的一些bug
- 获取网络图片展示到ListView上
- 求整数n的二进制数 1的个数,0的个数
- git 忽略文件
- BCP导出数据
- 分割带有plist的图片(TexturePacker)
- Mysql获取数据库的所有表,以及表所有字段信息
- 用shell来写脚本
- Java 集合框架初探
- 设置其他接口,按模块化处理