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>
¿Fue útil?

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
scroll top