Android: как измерить общую высоту ListView [дубликата]

На этот вопрос уже есть ответ:

Рассчитайте размер представления списка или как сказать, чтобы он полностью раскрылся 12 ответов

Мне нужно измерить общую высоту ListView, но, похоже, я постоянно получаю неправильные значения. Я использую этот код:

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();
}

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

Заранее спасибо

Edit1:

У меня есть два ListView, и у них обоих есть элементы с 6-7 полями EditText. Я показываю / скрываю ListView, если пользователь хочет записать / удалить значения в EditText. Все работает хорошо, за исключением случаев, когда я хочу показать список, он занимает много места, потому что метод, рассчитанный для ListView, требует много места. Из-за этого у меня много пустого пространства под этим ListView. Как и в три раза больше свободного места, которое нужно.

Ответы на вопрос(3)

Ваш ответ на вопрос