Почему ADT вызывает код, указанный в документе, генерирует исключение UnsupportedOperationException? - PullRequest
0 голосов
/ 01 июля 2010

Мой XML-макет в res / layout / edit.xml:

<?xml version="1.0" encoding="utf-8"?>
<GridView 
  android:id="@+id/GridView01"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:numColumns="2">
<TextView
  android:text="Person's Name"
  android:id="@+id/PersonName"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"></TextView>
<TextView
  android:text="Person's Points"
  android:id="@+id/PersonPoints"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"></TextView>
</GridView>

Когда я пытаюсь переключиться с "edit.xml" на "Layout", я вижу эту ошибку:

java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not
supported in AdapterView

Я проверил документацию для AdapterView, и это ожидаемое поведение.Почему же ADT ожидает, что это сработает?

1 Ответ

1 голос
/ 01 июля 2010

Это потому, что вы пытаетесь добавить два TextView s в xml. Не делай этого. Представления для любого AdapterView должны исходить от адаптера.

Вам придется поместить TextView в другой макет, который также содержит ваши GridView. Вы можете использовать следующие макеты: FrameLayout, LinearLayout, RelativeLayout, TableLayout или реализовать свой собственный. Я думаю, что вы пытаетесь сделать, это иметь две кнопки поверх GridView, для которого вы будете использовать адаптер, который заполнит его.

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
        />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
        />
    </LinearLayout>
    <GridView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
</LinearLayout>

Два TextView будут одинакового размера из-за атрибута layout_weight. Следующая GridView займет оставшуюся часть пространства.

Если все, чего вы пытались достичь, это иметь два TextView рядом друг с другом, но одинакового размера, тогда просто используйте второй LinearLayout с горизонтальной ориентацией.

...