Последнее место, чтобы установить видимость дочернего представления - PullRequest
0 голосов
/ 04 августа 2011

Я использую Android APi 3. Я создал контейнерный элемент управления, содержащий два элемента управления: другой контейнер (макет) и ListView.

В основном элементе управления контейнера я переопределил функцию onLayout, чтобы изменить видимостьдочерний вид GONE / VISIBLE, в зависимости от элементов в элементе управления списком (2nd child view).

Проблема в том, что когда я использую GONE, а затем событие запускается и устанавливается в VISIBLE, первый дочерний элемент управления показывает, но затемListView не показывает элемент - ListView явно имеет один элемент.

Возможно, onLayout может быть не последним местом для вызова setVisibility дочерних элементов управления.Если нет, то какое место лучше?

Для моей проблемы, использование проблемы невидимых исправлений вместо GONE.

ниже приведен код: @Override protected void onLayout (логическое значение изменено, int l,int t, int r, int b) {

    /* if there's no data to display, hide headerView */
    if (listView.getAdapter() == null || listView.getAdapter().getCount() == 0)
        headerView.setVisibility(INVISIBLE); // if set to GONE, it won't display the listView when there's only one item or unless it's refreshed 2nd time.
    else
        headerView.setVisibility(VISIBLE);

    super.onLayout(changed, l, t, r, b);
}

Есть мысли?

1 Ответ

0 голосов
/ 04 августа 2011

вероятно, вам нужно обновить весь listView, используя yourAdapter.notifyDataSetChanged(); ты сделал это ...?

...