Набор параметров макета Android ListView - PullRequest
2 голосов
/ 21 июля 2011

У меня есть ListView в моем xml. Структура этого так:

<ListView 
    android:id="@+id/SeriesCastListItemView"
    android:paddingTop="10dip"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#FFFFFF"
    android:dividerHeight="1px"/>

Теперь я хочу установить высоту для Listview по коду Java. меня пробовали с помощью следующего кода.

ListView castListItemView = (ListView) findViewById(R.id.SeriesCastListItemView);
castListItemView.setAdapter(new CastAdapter(this, castDescriptionArr));
castListItemView.setLayoutParams(new ListView.LayoutParams(LayoutParams.FILL_PARENT, 500));

Но это дает java.lang.ClassCastException: android.widget.AbsListView$LayoutParams. В чем проблема в моем коде?

Ответы [ 2 ]

8 голосов
/ 21 июля 2011

Вы должны использовать LayoutParams родительского представления, которое содержит ваш ListView. В моем случае я поместил ListView в макет кадра и использовал этот код. Если бы вы поместили ListView в LinearLayout, вы бы использовали LinearLayout.LayoutParams.

ListView castListItemView = (ListView) findViewById(R.id.SeriesCastListItemView);
castListItemView.setAdapter(new CastAdapter(this, castDescriptionArr));
castListItemView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 500));

Я предполагаю, что это была опечатка в вашем вопросе, но убедитесь, что буква "c" в castListItemView - это строчная буква в третьей строке.

Мистер Джер поднимает хорошую мысль. Поскольку многие различные представления имеют свои собственные LayoutParams, лучше включить представление, параметры которого вы хотите использовать (как в FrameLayout.LayoutParams), вместо того, чтобы угадывать Eclipse на основе того, какой класс LayoutParams вы ранее импортировали.

Вы можете увидеть этот предыдущий вопрос для получения дополнительной информации.

0 голосов
/ 21 июля 2011

в этой строке: new ListView.LayoutParams(LayoutParams.FILL_PARENT, 500) вы смешиваете классы LayoutParams.

Либо

new ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, 500)

, либо

new LayoutParams(LayoutParams.FILL_PARENT, 500)

исправит это мое предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...