¿Cómo puedo establecer drawable a un ListView en android

Estoy escribiendo una aplicación para Android 1.5. Quiero usar un listview complejo para mostrar mis datos. Quiero mostrar un ImageView de un objeto dibujable en mi elemento de lista.

Aprendí de una demo:

------> listData.put("Img", listData.put("Img", R.drawable.XXX)); listData.put("Time", "100"); listItems.add(listData); 

Se puede mostrar correctamente, sin embargo, quiero cambiar Img en tiempo de ejecución, la imagen puede generarse en tiempo de ejecución, por lo que cambiar el código de la siguiente manera, pero se cae. Alguien puede ayudarme ? ¡Muchas gracias!

 protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.item_list); itemListView = (ListView) findViewById(R.id.listview); ArrayList<HashMap<String, Object>> listItems = new ArrayList<HashMap<String, Object>>(); for(int i = 0;i <XXX.size(); ++i) { HashMap<String, Object> listData = new HashMap<String, Object>(); --------->/*1)*/ listData.put("Img", new Drawable(XXX)); /*2)*/ listData.put("Time", "100"); /*3)*/ listItems.add(listData); } SimpleAdapter listItemAdapter = new SimpleAdapter(this, listItems, R.layout.listitem, new String[] { "Img", "Time"}, new int[] { R.id.listitem_img, R.id.listitem_time }); itemListView.setAdapter(listItemAdapter); } 

Listitem.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom="4dip" android:paddingLeft="12dip" android:paddingRight="12dip"> <ImageView android:id="@+id/listitem_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="12dip"/> <TextView android:id="@+id/listitem_time" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textSize="20dip" /> </LinearLayout> 

Prueba éste, me ha ayudado.

 public class AndroidList extends ListActivity { public class MyCustomAdapter extends ArrayAdapter<String> { public MyCustomAdapter(Context context, int textViewResourceId, String[] objects) { super(context, textViewResourceId, objects); // TODO Auto-generated constructor stub } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub //return super.getView(position, convertView, parent); View row = convertView; if(row==null){ LayoutInflater inflater=getLayoutInflater(); row=inflater.inflate(R.layout.row, parent, false); } TextView label=(TextView)row.findViewById(R.id.weekofday); label.setText(month[position]); ImageView icon=(ImageView)row.findViewById(R.id.icon); if (month[position]=="December"){ icon.setImageResource(R.drawable.icon); } else{ icon.setImageResource(R.drawable.icongray); } return row; } } String[] month = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); /*setListAdapter(new ArrayAdapter<String>(this, R.layout.row, R.id.weekofday, DayOfWeek));*/ setListAdapter(new MyCustomAdapter(AndroidList.this, R.layout.row, month)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub //super.onListItemClick(l, v, position, id); String selection = l.getItemAtPosition(position).toString(); Toast.makeText(this, selection, Toast.LENGTH_LONG).show(); } } 

Encontrado aquí: http://android-er.blogspot.com/2010/06/using-convertview-in-getview-to-make.html

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.