2015-04-12 1 views
-1

Je programme une application de quiz. J'ai un TextView avec une question. La hauteur Textview change en fonction de la question. Sous le textview est une liste avec les réponses. Je veux faire quelque chose si la liste contient plus d'éléments que je peux voir. Donc, s'il y a une nouvelle question, j'écris le texte dans le textview et remplis les quesitons en tant qu'élément dans la liste. Après cela, je fais listView.getLastVisiblePosition(); mais c'est toujours -1. Quand je fais un bouton supplémentaire et que je place l'objet à l'intérieur, il renvoie la position lastVisible correcte. J'ai donc essayé d'obtenir la hauteur de tous les éléments de la listview (et des diviseurs) et de comparer cette hauteur avec listview.getHeight. Mais la hauteur Listview est toujours plus grande que la hauteur des items. J'ai donc essayé listview.canScrollVertically mais c'est toujours vrai.si (hauteur de tous les éléments> listview.height) alors ....

Donc je n'ai aucune idée de comment je peux vérifier si je peux voir tous les articles dans de listview ou je dois faire défiler.

+0

Il suffit de comparer '(listView.getLastVisiblePosition() - listView.getFirstVisiblePosition())' avec les éléments de la liste totale – Rami

+0

Merci mais le lastVisiblePosition est -1. Je ne veux pas avoir un bouton supplémentaire pour le vérifier. Si un utilisateur a répondu à une question, il doit cliquer sur un bouton qui vérifie si la réponse est correcte. Si la réponse est write je remplace le texte du textview par la nouvelle question, charge les nouvelles réponses dans le textview et veux vérifier si chaque item est montré ou il doit faire défiler et en ce moment c'est -1. Si je ne vérifie pas un bouton supplémentaire pour le vérifier, il donne la bonne position, mais je ne veux pas un bouton supplémentaire. –

Répondre

0

Ok, j'ai une réponse. Ce n'est peut-être pas le meilleur mais ça marche.

Faites juste une petite pause.

new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      // Compare it here 
     } 
    }, 10);