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