Maison >Java >javaDidacticiel >Solution au problème de l'exécution répétée de getView lorsque ListView est actualisé plusieurs fois sous Android
Je n'ai pas remarqué que getView de listview serait exécuté plusieurs fois auparavant. Cette fois, parce que la mise en page était plus compliquée, je suis allé au suivi des points d'arrêt pendant les tests et j'ai constaté que le même élément de données était exécuté à plusieurs reprises. J'ai trouvé cela étrange, alors j'ai cherché en ligne. Les explications sur Internet sont fondamentalement les mêmes, c'est-à-dire que lorsque ListView est présenté, ni la hauteur ni la largeur ne sont fill_parent, ce qui entraîne un calcul continu de la hauteur et un rafraîchissement continu. Ou son conteneur parent n'est pas défini sur fill_parent.
Si la mise en page est trop complexe, il est irréaliste de tout ajuster en fonction de fill_parent. J'ai donc pensé à une autre solution, qui consiste à fixer dynamiquement la hauteur.
Une fois le programme exécuté, corrigez la hauteur de ListView, puis initialisez les informations sur l'élément.
private void fixedListView(){ listView = (ListView) findViewById(R.id.listview); ViewGroup.LayoutParams params = listView.getLayoutParams(); layout = (HorizontalScrollView) findViewById(R.id.layout); params.height = layout.getHeight(); //需要设置的listview的高度,你可以设置成一个定值,也可以设置成其他容器的高度,如果是其他容器高度,那么不要在oncreate中执行,需要做延时处理,否则高度为0 listView.setLayoutParams(params); }
De cette façon, on constate que la vitesse de rafraîchissement de ListView est considérablement accélérée. Des collègues ont également résolu le problème des exécutions multiples du code d'écoute s'il existe un écouteur pour addTextChangedListener (new TextWatcher() dans la saisie de texte EditText dans Item.
Plus de solutions au problème des actualisations multiples de ListView dans Android et exécution répétée de getView. Veuillez faire attention au site Web PHP chinois pour les articles connexes