Comment ajouter même à la vue parent à plusieurs reprises par le gonflant qu'une seule fois

J'ai un LinearLayout avec orientation verticale en tant que parent, je veux ajouter quelques vue par programmation à plusieurs reprises à ce parent. Maintenant je suis à gonfler l'enfant chaque fois que l'obtention de nouvelles références pour chaque élément de l'INTERFACE utilisateur avant d'ajouter d'un parent. Cela ne semble pas être très efficace, est-il une meilleure manière de faire ceci.

Actuel code que j'utilise est ci-dessous, Si je me gonfler qu'une seule fois avant la boucle for-je obtenir de l'erreur d'exécution", il a précisé enfant a déjà une mère. Vous devez appeler removeView() sur le parent de l'enfant d'abord".

        LayoutInflater inflator = LayoutInflater.from(getBaseContext());
        LinearLayout parentPanel = findViewById(R.id.parent_pannel);

        ArrayList<String> myList = getData();
        for(String data : myList) {
            //inflate child
            View item = inflator.inflate(R.layout.list_item, null);
            //initialize review UI
            TextView dataText = (TextView) item.findViewById(R.id.data);
            //set data
            dataText.setText(data);
            //add child
            parentPanel.addView(item);
        }
  • Je suis d'accord, ce serait chouette si il y avait un moyen facile de "cloner" les points de vues, mais je n'ai pas encore trouver. Gonfler encore et il est. Cependant, je dois dire qu'à partir de votre extrait de code, il me semble que vous voudriez utiliser un ListView.
  • J'ai peur que c'est par la conception. Vous ne pouvez pas avoir plusieurs parents pour un point de vue, ainsi que d'ajouter même à la vue de la mère à plusieurs reprises. Il serait assez difficile d'écrire du code sans bug pour ViewGroups (et les scénarios similaires) si ce n'était pas ainsi.
  • Je n'ai pas la conception de ma mise en page à utiliser ListView, car il aurait pu rendre le code plus complexe parce que la façon dont je veux que chaque chose à être jeté dehors. Je suppose que, pour l'efficacité, je dois passer le tout à la liste.
  • La raison pour laquelle je le signaler, c'est que ListView recycle Vues pour cette même raison. Puisque vous ne voyez que des N points de vue à un moment il ne se gonfle celles qui sont nécessaires, et puis il suffit de les réutilise. Quelque chose à considérer si vous voyez vous-même en ajoutant un peu de vues.
  • Vues dans la plupart des cas ne sera pas plus de 10, donc à l'aide d'ListView ne serait pas nécessairement améliorer les performances en que beaucoup.
  • Déplacer à la liste Seulement. Vous pouvez dessiner tous les possibles de vue à l'aide que. Le code que vous essayez, vous aurez à gonfler à chaque fois un nouveau point de vue pour l'ajouter avec succès.
  • J'aurais pensé que gonfler xml même page plusieurs fois en fait crée des objets distincts, mais de la même structure. Pourquoi les h.ll ne serait-ce pas possible? Par ailleurs, une ListView n'est pas toujours une option: vous avez tout dans un ScrollView - vous ne pouvez pas avoir une ListView dans un ScrollView. Gonfler les mises en page de document xml est grande dans ce cas.

InformationsquelleAutor mkso | 2011-06-22