¿Cómo puedo configurar dibujable a un ListView en Android
Pregunta
Estoy escribiendo una aplicación para android 1.5. Quiero usar una vista de lista compleja para mostrar mis datos. Quiero mostrar un ImageView de un objeto estirable en mi elemento de la lista.
he aprendido de una demo:
------> listData.put("Img", listData.put("Img", R.drawable.XXX));
listData.put("Time", "100");
listItems.add(listData);
Se puede visualizar correctamente, sin embargo, quiero cambiar Img en tiempo de ejecución, La imagen quizás generada en tiempo de ejecución, por lo que cambiar el código de la siguiente manera, pero se queda. 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>
Solución
Trate de éste, que ha ayudado a mí.
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();
}
}
encontrar aquí: http: //android-er.blogspot.com/2010/06/using-convertview-in-getview-to-make.html
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow