- 浏览: 115366 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (98)
- java (27)
- jms (2)
- jta (0)
- 性能调优及内存分析 (4)
- 设计模式 (14)
- 框架 (6)
- 其它 (9)
- job (1)
- maven (1)
- 服务器 (2)
- 分布式 (3)
- ibatis (1)
- linux (0)
- mysql (0)
- 并发编程 (0)
- java多线程 (2)
- 前端跨域 (1)
- 线程dump分析 (0)
- velocity (0)
- 数据库 (2)
- 协议 (0)
- 监控 (0)
- 开源软件 (2)
- 算法 (0)
- 网络 (1)
- spring (1)
- 编码 (0)
- 数据结构 (0)
- HTable和HTablePool使用注意事项 (0)
- opencms (0)
- android (16)
- 操作系统 (2)
- top (0)
最新评论
-
hold_on:
@Override public boolea ...
android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片) -
achersnake:
123
Servlet中listener(监听器)和filter的总结 -
angel243fly:
我用了这个方法,还是报同样的错误,还有什么建议吗?
eclipse提示CreateProcess error=87错误的解决方法
最近在做一个天气预报的例子,想在ListView中添加网络图片,在翻阅很多文档,在Baidu上Google很久,终于找到了办法,现在跟大家分享一下解决方案,此篇仅做一个比较简单的实例。
大家知道ImageView类虽然有一个setImageUri方法,但不能直接接受一个由网络地址生成的uri作为参数从而显示图片,我们只好使用其setImageBitmap方法,如:
1
2
3
4
5
|
Bitmap mBitmap = null ;
URL url = new URL(imageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream is = conn.getInputStream(); mBitmap = BitmapFactory.decodeStream(is); |
在SimpleAdapter中需要一个数据源,用来存储数据的,在显示图片时我们要用HashMap<>存储一个Bitmap;但仅存取了Bitmap时在ListView中是无法显示图片的,我们需要对SimpleAdapter进行处理。
如下是对SimpleAdaptr处理的主要代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
adapter.setViewBinder( new ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
//判断是否为我们要处理的对象
if (view instanceof ImageView && data instanceof Bitmap){
ImageView iv = (ImageView) view;
iv.setImageBitmap((Bitmap) data);
return true ;
} else
return false ;
}
}); |
看API对android.widget.SimpleAdapter.ViewBinder的解释:
This class can be used by external clients of SimpleAdapter to bind values to views. You should use this class to bind values to views that are not directly supported by SimpleAdapter or to change the way binding occurs for views supported by SimpleAdapter.
你可以使用该类来处理SimpleAdapter不直接支持的数据。
下面来看看完整的代码:
main.xml 中就是一个ListView , list_item.xml 是为ListView中控件提供布局 ,就是一个ImageView。这两个比较简单,不贴出代码。
主要代码:MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
package com.yin.listView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleAdapter.ViewBinder;
public class MainActivity extends Activity {
ListView mListView;
View mView;
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
mView = LayoutInflater.from( this ).inflate(R.layout.list_item, null );
mListView = (ListView) findViewById(R.id.mList);
List<HashMap<String, Object>> mListData = getListData();
SimpleAdapter adapter = new SimpleAdapter( this , mListData,
R.layout.list_item, new String[] { "icon" },
new int [] { R.id.image });
adapter.setViewBinder( new ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
// 判断是否为我们要处理的对象
if (view instanceof ImageView && data instanceof Bitmap) {
ImageView iv = (ImageView) view;
iv.setImageBitmap((Bitmap) data);
return true ;
} else
return false ;
}
});
mListView.setAdapter(adapter);
}
public List<HashMap<String, Object>> getListData() {
List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = null ;
for ( int i = 0 ; i < 5 ; i++) {
map = new HashMap<String, Object>();
map.put( "icon" , getBitmap());
list.add(map);
}
return list;
}
public Bitmap getBitmap() {
Bitmap mBitmap = null ;
try {
URL url = new URL(imageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
mBitmap = BitmapFactory.decodeStream(is);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return mBitmap;
}
} |
注意:此例是显示网络图片,要记得添加权限。
1
|
< uses-permission android:name = "android.permission.INTERNET" >
|
http://www.android-study.com/pingtaikaifa/426.html
发表评论
-
android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)
2013-01-15 20:02 2915http://blog.csdn.net/jj120522 ... -
Maven Android Plugin
2013-01-06 16:20 1649Maven Android Plugin h ... -
解决Android模拟器无法用PC键盘输入与模拟器外部功能添加.
2013-01-06 16:20 1498公司发了PC后重新装了Android开发环境. 但是在模拟器上 ... -
Android Fragment使用
2012-12-20 17:29 915你可以像为View一样, 为fragment指定lay ... -
Android异步处理四:AsyncTask的实现原理
2012-12-14 09:08 1041在《Android异步处理二:使用AsyncTask异步 ... -
Android异步处理三:Handler+Looper+MessageQueue深入详解
2012-12-14 09:06 1025在《Android异步处理一:使用Thread+Hand ... -
Android异步处理二:使用AsyncTask异步更新UI界面
2012-12-14 09:00 1085在《Android异步处理一:使用Thread+Hand ... -
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
2012-12-14 08:48 1048概述:每个Android应用程序都运行在一个dalvik ... -
Android 中LayoutInflater的使用
2012-12-11 20:11 0大家好我们这一节讲的是LayoutInflater的使用,在实 ... -
邵洋江 android之tabhost讲解
2012-12-11 19:15 0Tab标签页是界面设计时经常使用的界面控件,可以实现多个分页之 ... -
android Bitmap用法总结
2012-12-10 13:09 0android Bitmap用法总结 http://ww ... -
Parcelable接口应用
2012-11-30 19:53 0Android中Intent传递对象有两个方法,一个是让 ... -
常用的android弹出对话框
2012-11-09 08:47 0http://blog.csdn.net/chenlei ... -
Android实现推送方式解决方案
2012-11-07 13:44 0转:http://www.cnblogs.com/han ... -
Android 之 下拉框(Spinner)的使用
2012-11-06 15:16 0下拉列表 Spinner。 Spinner的使用,可以极 ... -
android ListView添加事件并获取选中项的值
2012-11-05 11:45 0转:http://www.beijibear.com/?aid ... -
Android 用TextView做菜单的多个onClick事件的处理
2012-11-02 19:23 0TextView控件使用OnClick事件监听的时候,会遇到一 ... -
android ListView详解
2012-11-01 09:43 0在android开发中ListView是比较常用的组件, ... -
Android用Application设置全局变量以及使用
2012-10-21 14:08 985如果想在整个应用中使用全局变量,在java中一般是使用静态 ... -
TabSpec和TabHost实例
2012-10-15 08:44 1606TabSpec与TabHost TabHost相当于 ...
相关推荐
通过以上步骤,"Listview显示网络图片demo--真正简单好用"项目为我们提供了一个实用的解决方案,使得在ListView中加载网络图片变得高效且不易出错。开发者可以轻松地将这个Demo应用到自己的项目中,优化用户体验,...
在给定的场景中,"C#在ListView中Subitem显示图片"是一个关于在ASP.NET Web应用程序中使用ListView控件来展示数据时,如何在Subitems中添加图像的功能。 ListView控件是ASP.NET 2.0引入的一种高度可定制的数据绑定...
本文将深入探讨如何在ListView中实现网络图片的加载与显示,以及解决图片错乱的问题。 首先,我们需要一个图片加载库来帮助我们处理网络图片的下载和显示。在Android社区中,有多个流行的图片加载库可供选择,如...
在listview中显示网络图片,该类重写simpleadapter,让listview绑定该adapter
以上就是Android解析网络图片并显示在ListView中的主要知识点,这些技术和实践对于任何需要动态加载图片的Android应用来说都是至关重要的。在实际开发中,应根据项目需求和性能要求选择合适的方法和库。
总之,"Listview显示网络图片"涉及到Android开发中的性能优化和用户体验设计。通过使用异步加载库如Glide,我们可以高效地在ListView中加载网络图片,同时保证应用的流畅性。同时,合理利用缓存和优化策略,可以...
然而,当ListView中的每一项都需要显示网络图片时,如果不进行优化,可能会导致性能问题,如界面卡顿、滚动不流畅等。这个问题的解决方法是高效地加载网络图片并自定义ListView的布局。 首先,我们需要了解异步加载...
从网络加载图片显示到listview上,主函数布局是一个ListView item布局是TextView和ImageView 数量的多少视情况而定 再写一个网络请求数据的类 最后面有代码: ”urlConnection 请求数据类的封装“ 类名一定要一样...
`这一行代码负责加载并显示网络图片。 当然,除了Picasso,还有其他如Glide、Fresco等优秀的图片加载库,它们都有各自的特点和优势。例如,Glide以其流畅的滚动和自动管理内存而受到欢迎,Fresco则提供了更高级的...
在Java(Android)中,可以创建Bitmap对象并将其添加到ImageView中,但通常我们会使用RecyclerView和Glide或Picasso库来加载网络图片。 2. **添加图片**:将图片添加到ImageList中,这可以通过读取本地文件或网络...
这个项目“listview 添加图片效果显示,加文字搜索提示”显然关注于如何在ListView中实现图文混排以及添加搜索功能。以下将详细讲解这两个关键知识点。 1. **图文混排**: 在ListView中显示图文混排的内容,通常...
"ListView加载网络图片"这个主题涉及到如何有效地在ListView的每个Item中加载和显示从互联网获取的图像,同时保持性能和用户体验。 在描述中提到,提供的代码资源可以解决大部分开发者遇到的头疼问题,即如何优化...
因此,"ListView异步加载网络图片"是一个重要的优化技巧。 异步加载的基本思路是将图片下载和显示的操作放在后台线程进行,避免占用主线程资源,确保UI的流畅。在Android中,可以使用多种方式实现这一目标,例如...
然而,在实现ListView时,由于其内部机制,可能会出现一个问题,即ListView中的item(列表项)重用导致图片重复加载,这不仅会消耗不必要的网络资源,还可能影响用户体验。本文将深入探讨这个问题,并提供解决方案。...
本篇文章将深入探讨如何对ListView显示图片进行优化,确保流畅的用户体验。 1. 使用高效的图片加载库:对于ListView中的图片加载,推荐使用像Glide、Picasso或 Fresco 这样的第三方库。这些库具有智能缓存机制,能...
接下来,我们将创建一个自定义的Adapter,它将负责加载网络图片并将其显示在ListView的每一项中。Adapter通常继承自BaseAdapter或ArrayAdapter,我们这里可以创建一个继承自BaseAdapter的类,包含一个List来存储图片...
这个场景中,我们讨论的是如何在ListView中加载网络图片,这是一个初级级别的教程。在实际应用中,我们需要考虑到性能和用户体验,比如避免图片错位和及时更新图片。这里我们将深入解析LruCache和AsyncTask在图片...
"listview获取网络图片缓存优化" 主要关注如何在ListView中高效地加载和缓存网络图片,以提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动性能。当一个item...
在Android开发中,ListView是展示大量数据常用的组件,但直接加载网络图片会遇到性能问题,如界面卡顿、内存溢出等。这个"Android高级应用源码-listview获取网络图片缓存优化.zip"是一个示例项目,旨在解决这些问题...