Я работаю над небольшим приложением, которое помогает мне отслеживать мое питание. Теперь я строю макет с адаптером. Для этой цели я использую SimpleCursorAdapter, потому что все необходимые данные поступают из моей базы данных. Все прошло отлично, за исключением одного вещь:Как установить ID на программно созданные флажки?
Все флажки имеют одинаковый идентификатор. Поэтому я не могу проверить каждый из них. Есть одно решение, которое я знаю, как его можно решить, но в этом случае я не могу использовать xml-файл для генерации идентификаторов, потому что я не знаю, сколько флажков будет в следующий раз при запуске приложения.
Вот мой код:
public void getIdAndDate()
{
db = new DATABASE(this);
SQLiteDatabase sqldb = db.getReadableDatabase();
String[] Columns = {"_id", "date"};
int[] toViews = {R.id.entry_id, R.id.entry_date};
Cursor cursor1;
cursor1 = sqldb.query(db.TABLE_DAILY_CONSUMPTION, Columns, null, null, null, null, null);
numRows = cursor1.getCount();
int id[] = new int[numRows];
String date[] = new String[numRows];
for(int i = 0; i<numRows; i++)
{
cursor1.moveToNext();
id[i] = cursor1.getInt(0);
date[i] = cursor1.getString(1);
}
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.layout_entry, cursor1, Columns, toViews, 0);
entries.setAdapter(adapter);
}
И это мой макет:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/entry_id"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/entry_date"
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="20sp"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/entry_selection"
android:layout_gravity="right"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
/>
Я действительно пытаюсь понять, как я могу решить эту проблему, но я не могу даже представить себе какие возможности у меня есть.
Вы можете просто вызвать 'setId' в свой вид' CheckBox' с любым значением целого числа. Вы делаете это только сейчас? – Shaishav
http://stackoverflow.com/questions/5939392/android-checkable-listview и другие ресурсы доступны из поиска Google в 'android listview checkable' или' android listview checkbox'. – CommonsWare