J'ai une liste de fichiers qui sont attribués à différents ensembles de données de manière dynamique. Cela fonctionne bien. J'ai également rendu FastScrollenabled pour être vrai. Pour que l'articleIndexer soit mis à jour, j'ai besoin d'appeler
list.setFastScrollEnabled(false); list.setFastScrollEnabled(true);
3 Réponses :
Essayez avec:
listView.requestLayout();
Cela n'appelle pas Onsizechanged après la première fois lorsque la liste est réellement affichée.
Ensuite, je suppose que Best Shot est de SubcLass Listview et de l'appeler manuellement :)
Pour forcer Onsizechanged sur Listview Je fais ce qui suit:
myList.getLayoutParams().height = myList.getHeight() + 1; myList.requestLayout();
Cela ne fonctionne pas si vous avez la hauteur déjà réglée sur Fill_Parent. Si vous faites cela, puis changez d'orientation, vous aurez la hauteur incorrecte.
Il s'agit d'un hack pour obtenir un défilement rapide de fonctionner lorsque la liste est dynamique et est mise à jour.
C'est ma solution:
I Sous-classement GridView avec constructeur (contexte, attributset):
(Ceci pour moi doit être fait sur une classe de fichiers séparée)
et Méthode ONSIZECHANGED ONSIZECHANGED
MyActivity.java public class MyActivity extends Activity { onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(...) ... } .... protected void onStart() { // TODO Auto-generated method stub // call db and create cursor // 'mygridview' = findbyid MyGrid // (declared on xml like '<packagepath>'.mygrid // setadapter with my costom adapeter // **HERE THE CALLED ONSIZECHANGED** // I make test proper for my app // (there is a simple test) if ('mygridview'.getMeasuredHeight() > 0) { // I use the same width and height for new and old measures // because for me that is right 'mygridview'.onSizeChanged(gw.getWidth(), gw.getHeight(), gw.getWidth(), gw.getHeight()); } super.onStart(); } }