Динамически обновлять высоту элемента списка в ListView - PullRequest
0 голосов
/ 12 декабря 2010

У меня есть список. Когда вы нажимаете на элемент, он становится выделенным и должен быть развернут по вертикали для отображения дополнительных данных.

Я пытаюсь сделать это, добавив в макет каждого элемента представление «Подробности», которое скрыто по умолчанию и имеет значение VISIBLE onClick.

Единственная проблема в том, что высота элемента не изменилась. Если я попытаюсь это так:

                    holder.line_view
                        .setLayoutParams(new LinearLayout.LayoutParams(
                                LayoutParams.FILL_PARENT, dip(
                                        convertView.getContext(), 30)));

тогда я получаю неизвестное исключение. Просто

holder.details_pane.setVisibility(View.VISIBLE);

не работает, размер не изменяется.

Пожалуйста, сообщите.


Компоновка:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/line_view">
<TextView
    android:id="@+id/desc"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="Description" />
<TextView
    android:text="LALALA"
    android:id="@+id/detailed_desc"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

В адаптере я пытаюсь:

 @Override
            public View getView(int position, View convertView, ViewGroup parent) {
...
switch (getItemViewType(position)) {
case TYPE_ITEM_EXPANDED:
                    holder.details_pane.setVisibility(View.VISIBLE);
...
case TYPE_ITEM_NORMAL:
                    holder.details_pane.setVisibility(View.GONE);
                }

Ответы [ 2 ]

1 голос
/ 20 января 2011

"не работает, размер не меняется"

что-то попробовать, если вы разрешите вращать ваш вид: заставьте ваш вид перерисовать себя и посмотрите, больше ли строка.

Возможно, вам просто нужно аннулировать просмотр списка, чтобы он перерисовывался. Возможно сделать строку недействительной.

может быть, это так же просто, как вызвать notifyDataSetChanged (); в вашем собственном адаптере списка

0 голосов
/ 12 декабря 2010

Понятия не имею о выдаче вашего кода.но вы должны попробовать это

com.android.widget.ExpandableListView
com.android.widget.ExpandableListAdapter

это разработано для ваших требований и поставляется с ОС

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