7
votes

Forcer ONSIZECHANGED POUR LISTEVIEW

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


0 commentaires

3 Réponses :


0
votes

Essayez avec:

listView.requestLayout();


2 commentaires

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 :)



8
votes

Pour forcer Onsizechanged sur Listview Je fais ce qui suit:

myList.getLayoutParams().height = myList.getHeight() + 1;
myList.requestLayout();


2 commentaires

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.



0
votes

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


0 commentaires