не храните Drawable в HashMap, используйте свою собственную реализацию SimpleAdapter, как это (как «Icon» в hashmap, указывайте только имя файла)
public class MySimpleAdapter extends SimpleAdapter{
Context localcontext = null;
public MySimpleAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
localcontext = context;
}
@Override
public void setViewImage(ImageView v, String value){
try {
v.setImageDrawable(Drawable.createFromStream(localcontext.getAssets().open("flags/" + value + ".png"), null));
} catch (IOException e) {
e.printStackTrace();
}
}
//EDIT ... he ask how to add odd/even row with diff colours
private int[] colors = new int[] { 0xe0e0e0ff, 0x404040ff };
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
int colorPos = position % colors.length;
view.setBackgroundColor(colors[colorPos]);
return view;
}
}
и используйте MySimpleAdapter вместо SimpleAdapter