J'ai une application qui récupère les annonces stockées en tant que fichiers xml sur un serveur et charge le titre et l'auteur de chaque annonce dans un élément ListView. Ce que j'ai également besoin de stocker avec chaque élément est l'ID de chaque annonce, mais je n'ai pas vraiment besoin de l'afficher. J'ai pensé à peut-être stocker l'ID dans la carte de hachage que j'utilise pour remplir la liste et ensuite trouver l'ID associé avec le titre cliqué mais je pense qu'il serait dangereux d'utiliser puisque deux annonces pourraient avoir le même titre (et auteur et date) . J'ai également pensé à ajouter un TextView invisible à chaque élément pour stocker l'ID, mais cela causait des problèmes de mise en page. Enfin, j'ai cherché autour de et trouvé setTag() et getTag() qui je pense serait parfait pour ce que je veux faire, mais je ne suis pas vraiment sûr de savoir comment les utiliser avec SimpleAdapter (je suis relativement nouveau à ce ...). Si l'idée est TextView ce que je dois faire (bien que je doute), voici la mise en page que je utilise pour chaque élément:Joindre des données d'ID aux éléments listview
<?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>
Et j'utilise l'adaptateur ci-dessous pour remplir la liste:
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);
Nous vous remercions de votre aide!
Je pense ici est la meilleure réponse pour vous: http://stackoverflow.com/a/3051729/7379190 – AleX
Je pense que [ce] (http : //stackoverflow.com/a/3051729/7379190) est la meilleure réponse à votre question. – AleX