使用ImageLoader获取图片,使用异步在网上请求json,然后解析,在listview中显示出来
来源:互联网 发布:大宗交易数据 编辑:程序博客网 时间:2024/05/17 08:01
1.首先先自己定义一个MyApplication,里面写上上图片显示的配置
package com.example.weekone2;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;import android.app.Application;public class MyApplication extends Application{@Overridepublic void onCreate() {//初始化ImageLoader//步骤1:初始化一个默认的图片显示配置DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher).displayer(new FadeInBitmapDisplayer(3000)).build();//步骤2:初始化config配置//如果使用默认的 直接用静态方法创建 如果要自己添加配置 那么需要new一个configs对象ImageLoaderConfiguration configs = new ImageLoaderConfiguration.Builder(this).threadPoolSize(4).memoryCacheExtraOptions(480, 800).defaultDisplayImageOptions(options).build();//初始化ImageLoader.getInstance().init(configs);super.onCreate();}}
2.创建完MyApplication然后在AndroidManifest.xml中加上权限
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.weekone2" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:name="com.example.weekone2.MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
3.最后在MainActivity中开始写,使用异步从网上请求数据获取图片和json解析 在listview中展示出来。
package com.example.weekone2;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import android.app.Activity;import android.os.AsyncTask;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 com.example.weekone2.bean.NewsData;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.ImageLoader;public class MainActivity extends Activity {ListView lv;NewsData nd;MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); initData(); adapter = new MyAdapter(); lv.setAdapter(adapter); } class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {if(nd != null){return nd.getData().size();}return 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder ;if(convertView == null){convertView = View.inflate(MainActivity.this, R.layout.list_item, null);holder = new ViewHolder();holder.tv_summary = (TextView) convertView.findViewById(R.id.tv_summary);holder.tv_title = (TextView) convertView.findViewById(R.id.tv_title);holder.iv = (ImageView) convertView.findViewById(R.id.iv);convertView.setTag(holder);}else{holder = (ViewHolder) convertView.getTag();}holder.tv_title.setText(nd.getData().get(position).getNews_title());holder.tv_summary.setText(nd.getData().get(position).getNews_summary());//昨天的实现方式是 在getView方法创 创建一个线程 通过把请求的图片输入流转换成bitmap对象的方式设置在iv控件上//今天 使用ImageLoaderImageLoader.getInstance().displayImage(nd.getData().get(position).getPic_url(), holder.iv);return convertView;} } public static class ViewHolder{ TextView tv_title,tv_summary; ImageView iv; } private void initData() {new AsyncTask<String, String, NewsData>(){//子线程方法 后台方法@Overrideprotected NewsData doInBackground(String... params) {//发起网络请求获取数据InputStreamReader isr = getData();Gson gson = new Gson();nd = gson.fromJson(isr, NewsData.class);return nd;}//主线程方法 在doInBackground返回以后调用@Overrideprotected void onPostExecute(NewsData result) {adapter.notifyDataSetChanged();super.onPostExecute(result);}}.execute();}protected InputStreamReader getData() {InputStreamReader isr = null;try {URL url = new URL("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");int code = conn.getResponseCode();if(code == 200){//请求成功 使用输出输出流 来处理数据//方式一//1、把数据流中的数据循环读入到 ByteArrayOutputStream输出流中//2、把ByteArrayOutputStream输出流中的数据 转换成字符串//3、把这个字符串返回//InputStream is = conn.getInputStream();//ByteArrayOutputStream bos = new ByteArrayOutputStream();//int len = -1;//byte[] buff = new byte[1024];//while((len = is.read(buff)) != -1){//bos.write(buff, 0, len);//}//String result = new String(bos.toByteArray());//方式二//1、把数据的 字节输入流 转换成 字符输入流//2、返回该字符输出流InputStream is = conn.getInputStream();isr = new InputStreamReader(is);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return isr;}}
阅读全文
0 0
- 使用ImageLoader获取图片,使用异步在网上请求json,然后解析,在listview中显示出来
- 网络请求图片和json解析,在listView中展示出来
- 使用ImageLoader从网上获取图片 及添加数据库,listview展示 Gson解析
- 使用 PHP 获取并解析 JSON 显示在页面中
- 网络请求Json解析显示在listview
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- 在HTML中使用动态变量获取数据库路径的图片,并显示出来。
- 使用AsyncTask从网上获取一个网页,在一个TextView中将其源代码显示出来
- Android使用Universal-ImageLoader在ListView中加载网络图片简单示例
- 在ListView中使用ImageLoader加载图片时出现闪烁问题
- 获取json数据和ImageLoader图片显示到listview
- 用ImageLoader缓存,volley网络请求百度api的图片显示在listview(demo)
- 网上获取图片,展现在ListView上,
- 在ajax请求中使用json数据格式
- 在ASP.NET中自动合并小图片并使用CSS Sprite显示出来
- 在ASP.NET中自动合并小图片并使用CSS Sprite显示出来
- 在VC++中获取Rplidar数据并使用OpneCV显示出来
- 联网获取json数据,进行解析,并使用listview展示出来
- JDK源码就在jdk安装包里
- [SDUT](3363)数据结构实验之图论七:驴友计划 ---单源最短路径(图)
- C# 文件分割符
- API 数据架构的简述(针对本人的使用)
- 漂流调研
- 使用ImageLoader获取图片,使用异步在网上请求json,然后解析,在listview中显示出来
- Rabbitmq基础概念+入门案例
- 深度学习学习7步骤
- 使用 RMI + ZooKeeper 实现远程调用框架
- iOS开发 UITableView中cell嵌套UITextField(UITextView)引起的复用问题
- 转载:js版本的设计模式
- Numpy、Pandas和Matplotlib包基础知识
- Codeforces 450B-Jzzhu and Sequences (矩阵快速幂)
- 监控工具Monit安装与部署