Tengo una aplicación que recupera anuncios almacenados como archivos xml en un servidor y carga el título y el autor de cada anuncio en un elemento ListView. Lo que también debo almacenar con cada artículo es la identificación de cada anuncio, pero en realidad no necesito mostrarlo. Pensé en almacenar la ID en el mapa hash que uso para completar la lista y luego encontrar la ID asociada con el título seleccionado, pero creo que sería inseguro utilizarlo ya que dos anuncios podrían tener el mismo título (y autor y fecha) . También pensé en agregar un TextView invisible a cada elemento para almacenar el ID, pero eso estaba causando problemas de diseño. Por último, busqué y encontré setTag() y getTag(), que creo que sería perfecto para lo que quiero hacer, pero no estoy seguro de cómo usarlos con SimpleAdapter (soy relativamente nuevo en esto ...) Si la idea de Vista de Texto es lo que tengo que hacer (aunque lo dudo), aquí está el diseño que estoy usando para cada elemento:Adjuntando datos de identificación a elementos de vista de lista
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<LinearLayout
android:orientation="horizontal"
android:id="@+id/items"
android:weightSum="100"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_weight="85"/>
<LinearLayout
android:orientation="vertical"
android:id="@+id/itemCB"
android:layout_weight="15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center">
<CheckBox
android:id="@+id/cbSelected"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
y estoy usando el siguiente adaptador para llenar la lista:
for(int i = 0; i < ann.length; i++)
{
map = new HashMap<String, String>();
map.put("line1", ann[i].getTitle());
map.put("line2", "Posted by: " + ann[i].getAuthor() + "\n" + ann[i].date.toLongString());
list.add(map);
}
String[] from = { "line1", "line2"};
int[] to = { android.R.id.text1, android.R.id.text2};
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.twoline_checkbox_id_listitem, from, to);
setListAdapter(adapter);
¡Gracias por la ayuda!
Creo que aquí es la mejor respuesta para usted: http://stackoverflow.com/a/3051729/7379190 – AleX
creo que [esto] (http : //stackoverflow.com/a/3051729/7379190) es la mejor respuesta a su pregunta. – AleX