Android: Jak zmierzyć całkowitą wysokość ListView [duplikat]

To pytanie ma już odpowiedź tutaj:

Obliczyć rozmiar widoku listy lub jak nakazać mu pełne rozwinięcie 12 odpowiedzi

Muszę zmierzyć całkowitą wysokość ListView, ale wydaje się, że ciągle otrzymuję błędne wartości. Używam tego kodu:

public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }

    int totalHeight = 0;
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
            MeasureSpec.AT_MOST);
    Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += listItem.getMeasuredHeight();
        Log.w("HEIGHT"+i, String.valueOf(totalHeight));
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
}

Problem polega na tym, że otrzymuję większą wysokość, niż powinienem. Każda pozycja na liście jest mierzona inaczej i wszystkie pozycje mają tę samą wysokość, więc zdecydowanie nie powinna tego robić. Wysokość każdego elementu jest co najmniej dwa razy większa od jego rzeczywistej wysokości.

Z góry dziękuję

edit1:

Mam dwa ListView i oba mają elementy z 6-7 polami EditText. Pokażę / ukryję ListView, jeśli użytkownik chce zapisać / usunąć wartości w EditText. Wszystko działa dobrze, z wyjątkiem sytuacji, gdy chcę wyświetlić listę, zajmuje dużo miejsca, ponieważ metoda ListView obliczona metodą wymaga dużo miejsca. Z tego powodu mam dużo pustej przestrzeni pod tym ListView. Jak trzy razy więcej pustego miejsca, które potrzebowało.

questionAnswers(3)

yourAnswerToTheQuestion