Я пытаюсь запрограммировать приложение для игры в гольф на дисках Eclipse для моего телефона Android.Я хотел бы настроить его на 6 игроков, но в основном это будут 2 человека для игры.Данные хранятся в sqlite DB, и я использую SimpleCursorAdapter, чтобы заполнить данные для дыр, которые уже были оценены.вот этот код:
private void fillData() {
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor);
// Create an array to specify the fields we want to display in the list (only TITLE)
String[] from = new String[]{DiscGolfDbAdapter.KEY_HOLE,
DiscGolfDbAdapter.KEY_PAR,
DiscGolfDbAdapter.KEY_TOM_HOLE,
DiscGolfDbAdapter.KEY_TOM_GAME,
DiscGolfDbAdapter.KEY_CRAIG_HOLE,
DiscGolfDbAdapter.KEY_CRAIG_GAME,
DiscGolfDbAdapter.KEY_TOMS_POSITION,
DiscGolfDbAdapter.KEY_SKIP_PLAYER
};
// and an array of the fields we want to bind those fields to (in this case just text1)
int[] to = new int[]{R.id.schole, R.id.scpar, R.id.scth, R.id.sctg, R.id.scch, R.id.sccg, R.id.sctp,
R.id.skip};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.hole_info, notesCursor, from, to);
setListAdapter(notes);
}
В результате поиска в Интернете я обнаружил две возможности, которые ДОЛЖНЫ работать, но не работают.
Сначала я попробовал атрибут XML: android.visibility.Похоже, что это в порции представления, которое я пытаюсь «проверить» скрыть:
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android.visibility="GONE">
<TextView android:id="@+id/scch"
android:layout_width="45dip"
android:gravity="right"
android:textSize="25sp"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/sccg"
android:layout_width="45dip"
android:gravity="right"
android:textSize="25sp"
android:layout_height="wrap_content"/>
</LinearLayout>
Я пробовал это с «Ушел», «Ушел» и «ушел».Никто из них не работает в эмуляторе затмения ИЛИ на моем реальном телефоне.Таким образом, нет смысла пытаться параметризовать этот атрибут.
Далее я попытался установить атрибут XML для android: layout_height в значение "0dip".Это действительно работает в эмуляторе и на моем телефоне, когда он жестко кодируется.
Затем я перешел к следующему логическому шагу (как я его вижу), сохраняя параметр в БД, чтобы я мог «показать» или«не показывать» пункт в зависимости от условий в записи.Итак, я сохранил поле в БД с двумя значениями «0dip» и «wrap_content».Я передаю их в макет, как показано в java выше как R.id.skip.Я также добавил их в вывод только для проверки того, что они действительно есть.Вот этот XML:
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@+id/skip">
<TextView android:id="@+id/scch"
android:layout_width="45dip"
android:gravity="right"
android:textSize="25sp"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/sccg"
android:layout_width="45dip"
android:gravity="right"
android:textSize="25sp"
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView android:id="@+id/skip"
android:gravity="center"
android:layout_width="315dip"
android:textSize="10sp"
android:layout_height="wrap_content"/>
В приведенном выше тесте, как через эмулятор Eclipse, так и на моем телефоне с Android, последний TextView подтверждает, что БД содержит либо «0dip», либо «wrap_content», НО LinearLayout с:
android:layout_height="@+id/skip">
ведет себя так, как если бы он был "0dip" ВСЕ ВРЕМЯ.Другими словами, я не могу ПРОГРАММНО «повлиять на атрибут XML для android: layout_height.
Если есть лучший / более стандартный способ выполнения того, что я пытаюсь сделать, пожалуйста, поделитесь - НО БЫТЬ ЧИСТЫМ.новый, поэтому ПРИМЕРЫ КОДА будут работать лучше всего для меня.
29 мая - Мне кажется (основываясь на тестировании), что вы не можете изменить атрибуты макета для макета, указанного в этом коде:
SimpleCursorAdapter notes = new SimpleCursorAdapter(this,
R.layout.hole_info,
notesCursor, from, to);
setListAdapter(notes);
Все, что я пробую, приводит к некоторой ошибке или другой. Итак, я видел примеры пользовательских адаптеров списков, в которых эти атрибуты изменены, поэтому я пытаюсь преобразовать их в пользовательский адаптер списков.