Android Listview Mesurer La Hauteur

J'essaie de trouver un moyen de régler la hauteur d'une listview en fonction de la hauteur de ses enfants. J'ai suivi la solution donnée ici:
Comment puis-je mettre un ListView dans un ScrollView sans qu'il s'effondre?

public void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        //pre-condition
        return;
    }

    int totalHeight = 0;

    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);

        if(listItem != null){
            listItem.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));                
            listItem.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
            //listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
    }

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

Maintenant j'appelle la fonction ci-dessus sur la liste comme ceci:

public void displayReviews(ArrayList<Reviews> resultReviews){
    //Hide the loading progress
    hideReviewsLoading();

    if(resultReviews != null && resultReviews.size() > 0){
        mCurrentReviewList.onFetchFinished(resultReviews);
        setListViewHeightBasedOnChildren(mCurrentReviewList.getListView());
    }
    else{
        //Display a generic text to indicate no reviews are in yet
        displayEmptyText();
    }
}

Ici au-dessus de la mCurrentreviewList est un ListFragment qui, fondamentalement, a un adaptateur pour définir les éléments à l'intérieur d'une mise en page.

Le problème, je vais avoir, c'est que la hauteur de chaque listitem qu'il n'est pas exact. Et à la fin, lorsque tous les éléments de la liste(examens) sont peuplées de l'ensemble de la listview qu'il contient, n'a jamais complètement affiche tous les éléments de la liste. Il coupe quelque part ci-dessous - Comme le montre seulement 7.5 examens de un à 10.

Je ne suis pas sûr de ce que je fais mal. Toute aide et la direction serait grandement apprécié!

Êtes-vous sûr un ListView est vraiment ce que vous voulez ici ?
Ouais, je pense qu'une ListView est la meilleure solution que j'ai pour la mise en page je suis à la recherche à mettre en œuvre. Voici un rudimentaire mise en page j'ai dessiné pour expliquer ce que je suis en train de réaliser. dropbox.com/s/6mhf2xfqwkz2zsi/2014-02-06%2022.56.35.jpg je suis sur un TabHost et chaque Onglet lance un fragment avec le FragmentList que j'ai décrit ci-dessus. Donc, je n'ai pas besoin d'une listview qui défile en fait dans cette petite fenêtre. Un exemple de la mise en œuvre peut être trouvé dans l'application 500px. (Capture d'écran: dropbox.com/s/h4q5poiqfvdpmwa/2014-02-07%2006.57.33.png) et aussi dans google plus app.
Ok regarde comme si j'étais en mesure de comprendre pourquoi la mesure a été inexacte. Pour ListItem de la variable/dynamique de la hauteur, cela ne fonctionnera pas. La mesure de connaître au moins une variable, et en ce cas, il sera la largeur constante. Donc, d'abord calculer la largeur désirée de la liste que vous connaissez va être constante, en utilisant: int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); et puis la passer à la listitem mesure

OriginalL'auteur falc0nit3 | 2014-02-07