Я тестирую базовый запрос SQLite и использую SimpleCursorAdapter для заполнения ListView, содержащего LinearLayout, которые содержат TextViews данных столбца, но когда я изменяю порядок TextView, данные в TextView перемещаются с порядком, а не с R. я бы.
В приведенном ниже примере порядок элементов TextView следующий: @+id/rowid и @+id/name, и данные из курсора заполняются корректно.
Однако, если я изменю row.xml, чтобы изменить порядок EditText (я вырезаю весь элемент TextView и вставляю его на противоположной стороне другого TextView), данные из курсора остаются в том же порядке, т.е. данные DatabaseHelper.NAME из курсора переходят в @+id/rowid EditText, а данные _id из курсора переходят в @+id/name
Это нормальное поведение? Я ожидал, что столбцы SimpleCursorAdapter "от" будут заполнять представления "до" в соответствующем порядке в конструкторе.
Пример кода:
Cursor usersCursor;
String query = String.format("SELECT _id, %s FROM %s",
DatabaseHelper.NAME, DatabaseHelper.TABLE);
cursor = db.getReadableDatabase().rawQuery(query, null);
usersCursorAdapter = new SimpleCursorAdapter(getActivity(),
R.layout.row, usersCursor,
new String[] { "_id", DatabaseHelper.NAME },
new int[] { R.id.rowid, R.id.name },
0);
userList.setAdapter(usersCursorAdapter);
и R.layout.row.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/rowid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:textSize="36sp" />
</LinearLayout>