У меня есть приложение, которое извлекает объявления, хранящиеся в виде XML-файлов на сервере, и загружает заголовок и автора каждого объявления в элемент ListView. То, что мне также нужно хранить с каждым элементом, - это идентификатор каждого объявления, но мне фактически не нужно его отображать. Я подумал о том, чтобы сохранить идентификатор в хэш-карте, которую я использую, чтобы заполнить список, а затем найти связанный идентификатор с нажатым названием, но я думаю, что было бы небезопасно использовать, поскольку два объявления могут иметь один и тот же заголовок (и автора и дату) , Я также думал о добавлении невидимого TextView к каждому элементу для хранения идентификатора, но это вызывало проблемы с макетом. Наконец, я обыскал и нашел setTag() и getTag(), которые, я думаю, были бы идеальны для того, что я хочу сделать, но я не уверен, как их использовать с SimpleAdapter (я относительно новичок в этом ...). Если идея TextView это то, что мне нужно сделать (хотя я сомневаюсь), вот макет Я использую для каждого элемента:Прикрепление идентификационных данных к элементам списка просмотра
<?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>
И я использую следующий адаптер для заполнения списка:
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);
Благодарим за помощь!
Я думаю, что здесь лучший ответ для вас: http://stackoverflow.com/a/3051729/7379190 – AleX
Я думаю, что [это] (HTTP : //stackoverflow.com/a/3051729/7379190) - лучший ответ на ваш вопрос. – AleX