首页 > 代码库 > 学习Android之SimpleAdapter显示网络图片
学习Android之SimpleAdapter显示网络图片
效果图:
此程序主要的知识点是:SimpleAdapter本身是不支持网络图片的, 如果在Map.put(a,b)中 b为一个Bitmap,程序不会报红色字体,而是在控制台输出绿色的字体,如下
05-10 15:46:45.474: I/System.out(846): resolveUri failed on bad bitmap uri: android.graphics.Bitmap@43e40c08
要想实现显示网络图片其实很简单,使用SimpleAdapter中的方法simpleAdapter.setViewBinder()。
simpleAdapter.setViewBinder(new ViewBinder() { @Override 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; } return false; } });
new SimpleAdapter(MainActivity.this,getData(), R.layout.t, new String[] { "images" },new int[] { R.id.ImageVIew_main });
有三个参数view,data,textRepresentation,说说前两个参数,view 是你自定义布局(如上 R.layout.t)中所有的组件,程序会遍历一边布局中的组件,data是你传的
list<map< , >>(如上getData()方法,返回一个list<map< , >>),程序会遍历每一项数据。接下来用if()语句筛选就可以了。
既然是网络图片,那就需要权限
<uses-permission android:name="android.permission.INTERNET" />
代码如下:
MainActivity.java
public class MainActivity extends ActionBarActivity { ListView listView; List<Map<String, ?>> data; String str[] = { "", //自己添加图片网址 h t t p :// "", "", "" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.LV_main); SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, getData(), R.layout.t, new String[] { "images" }, new int[] { R.id.ImageVIew_main }); simpleAdapter.setViewBinder(new ViewBinder() { @Override 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; } return false; } }); listView.setAdapter(simpleAdapter); } public List<Map<String, ?>> getData() { data = http://www.mamicode.com/new ArrayList
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。