ListView使用SimpleAadapter加载drawable类型图片对象

      一般情况下使用SimpleAdapter来作为ListView适配器的时候,使用的图片都是在drawable目录下的图片id加载,即R.drawable.XX。实际开发中经常都是从服务器获取图片资源,得到的图片类型可能是Drawable或者Bitmap类型。

      加载其他类型的图片主要用到的是SimpleAdapter中的ViewBinder类。

使用Drawable类型的图片:

		SimpleAdapter adapter = new SimpleAdapter(getActivity(), getSimpleData(), R.layout.fragment_two_item, str, id);
		this.setListAdapter(adapter);
		
		adapter.setViewBinder(new ViewBinder() {
			@Override
			public boolean setViewValue(View view, Object data, String arg2) {
				if(view instanceof ImageView && data instanceof Drawable){
					ImageView iv = (ImageView)view;
					iv.setImageDrawable((Drawable)data);
					return true;
				}else{
					return false;
				}
			}    
        });   

使用Bitmap类型的图片:

		SimpleAdapter adapter = new SimpleAdapter(getActivity(), getSimpleData(), R.layout.fragment_two_item, str, id);
		this.setListAdapter(adapter);
		
		adapter.setViewBinder(new ViewBinder() {
			@Override
			public boolean setViewValue(View view, Object data, String arg2) {
				if(view instanceof ImageView && data instanceof Bitmap){
					ImageView iv = (ImageView)view;
					iv.setImageBitmap((Bitmap)data);
					return true;
				}else{
					return false;
				}
			}    
        }); 
      

在制作openfire+smack的IM实时聊天app的好友通讯录时发现加载好友的头像无法显示,图片类型无法匹配ListView的Adapter,故经过查找资料,做个记录,方便日后查找。



你可能感兴趣的:(Android)