Mam aplikację, która pobiera komunikaty zapisane jako pliki xml na serwerze i ładuje tytuł i autora każdego ogłoszenia do elementu ListView. To, co muszę przechowywać z każdym przedmiotem, to identyfikator każdego ogłoszenia, ale nie muszę go wyświetlać. Pomyślałem o przechowywaniu identyfikatora w mapie mieszania, której używam do wypełnienia listy, a następnie znajdowania powiązanego identyfikatora z tytułem klikniętym, ale myślę, że byłoby to niebezpieczne, ponieważ dwie ogłoszenia mogły mieć ten sam tytuł (oraz autora i datę) . Zastanawiałem się również nad dodaniem niewidocznego TextView do każdego elementu do przechowywania ID, ale to powodowało problemy z układem. Na koniec przeszukałem i znalazłem setTag() i getTag(), które moim zdaniem byłyby idealne do tego, co chcę robić, ale nie jestem pewien, jak używać ich z SimpleAdapter (jestem stosunkowo nowy w tym ...). Jeśli pomysł TextView to co muszę zrobić (chociaż wątpię), tutaj jest układ używam dla każdej pozycji:Dołączanie danych ID do elementów 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>
i używam następujący adapter do wypełnienia listy:
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);
Dziękuję za pomoc!
myślę tu jest najlepszym rozwiązaniem dla Ciebie: http://stackoverflow.com/a/3051729/7379190 – AleX
myślę [to] (http : //stackoverflow.com/a/3051729/7379190) jest najlepszą odpowiedzią na twoje pytanie. – AleX