Establecer imágenes dinámicamente en la vista de lista personalizada
Frecuentes
Visto 1,313 veces
0
alguien me puede explicar que estoy haciendo mal/que tengo que hacer?
Tengo una vista de lista que obtiene su información de una matriz json. Pero es una vista de lista personalizada, con 5 imágenes y algo de texto en cada fila. Cada imagen tiene un /drawable/image_selector con diferentes imágenes según habilitado/deshabilitado. Puedo configurar dinámicamente el texto para cada fila, usando hashmap y ListAdapter. Pero estoy tratando de hacer lo mismo con las imágenes y no puedo hacerlo. ¿Usar un adaptador personalizado es la elección correcta? y si es asi como? No he entendido de los ejemplos cómo usarlos.
Muchas Gracias
aquí está el código para la actividad dada: public class DisponiveisActivity extends ListActivity { ; //para os icones do layout
private ProgressDialog pDialog;
//Object of class JSON Parser
JSONParser jsonParser = new JSONParser();
ArrayList<HashMap<String, String>> disponiveislist;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
disponiveislist = new ArrayList<HashMap<String, String>>();
new Loaddisp().execute();
}
//Background ASYNC task to load
class Loaddisp extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(DisponiveisActivity.this);
pDialog.setMessage("Carregando");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
protected String doInBackground(String... args) {
String nome = l.getString("NOME");
String preco = l.getString("PRECO");
String cfotografia = l.getString("COMFOTOGRAFIA");
String cdados = l.getString("COMDADOS");
String copiniao = l.getString("COMOPINIAO");
String cdeslocacao = l.getString("COMDESLOCACAO");
String distancia = l.getString("DISTANCIA");
//create new HASHMAP
HashMap<String,String> map = new HashMap<String,String>();
map.put("NOME", nome);
map.put("PRECO", preco);
map.put("DISTANCIA", distancia);
map.put("COMOPINIAO", copiniao);
map.put("COMDADOS", cdados);
map.put("COMFOTOGRAFIA", cfotografia);
//------------------------------
disponiveislist.add(map);
}
@Override
protected void onPostExecute(String file_url) {
// TODO Auto-generated method stub
pDialog.dismiss();
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
Log.d("PP",disponiveislist.toString());
ListAdapter adapter = new SimpleAdapter(DisponiveisActivity.this, disponiveislist, R.layout.listrow,new String[]{"NOME","PRECO","DISTANCIA"}, new int[]{R.id.mission_name, R.id.preco, R.id.cdistancia});
setListAdapter(adapter);
}
});
}
}
}
1 Respuestas
0
Gran ejemplo que acabo de encontrar en Google: en este caso, solo tiene una imagen, realmente espero que entienda cómo duplicar el código para 5 imágenes seguidas.
public class ItemsList extends ListActivity {
private ItemsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.items_list);
this.adapter = new ItemsAdapter(this, R.layout.items_list_item, ItemManager.getLoadedItems());
setListAdapter(this.adapter);
}
private class ItemsAdapter extends ArrayAdapter<Item> {
private Item[] items;
public ItemsAdapter(Context context, int textViewResourceId, Item[] items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.items_list_item, null);
}
Item it = items[position];
if (it != null) {
ImageView iv = (ImageView) v.findViewById(R.id.list_item_image);
if (iv != null) {
iv.setImageDrawable(it.getImage());
}
}
return v;
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
this.adapter.getItem(position).click(this.getApplicationContext());
}
}
Respondido el 12 de junio de 12 a las 22:06
ok, ¿entonces sería suficiente un ciclo for usando las posiciones de los elementos y configurando la imagen dibujable? - user1437481
Sí, por supuesto, o iv1.setImageDrawable(it.getImage1());iv2.setImageDrawable(it.getImage2());iv3.setImageDrawable(it.getImage3());iv4.setImageDrawable(it.getImage4()); iv5.setImageDrawable(it.getImage5()); - Waza_Be
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android android-listview android-adapter or haz tu propia pregunta.
Probablemente debería publicar su código para que podamos ver si hay algún problema. Cruceo
acabo de editar con algunos fragmentos de mi código - user1437481