Itérer ListView et obtenir EditText-valeurs de Champ
J'ai créé un ListView (maliste) avec un EditText Champ de chaque ligne (R. id.mannschaften). En vertu de la liste, j'ai créé un Bouton et définissez un OnClickListener dans le OnCreate()-Méthode.
Maintenant, lorsque le Bouton est cliqué, je veux parcourir la liste et d'obtenir la valeur de l'EditText-Champ de chaque ligne et de les enregistrer dans une Chaîne de la Liste. Mais comment dois-je faire?
Voici mon Code:
private void ButtonClick() {
/** get all values of the EditText-Fields */
View v;
ArrayList<String> mannschaftsnamen = new ArrayList<String>();
EditText et;
for (int i = 0; i < myList.getCount(); i++) {
v = myList.getChildAt(i);
et = (EditText) v.findViewById(R.id.mannschaften);
mannschaftsnamen.add(et.getText().toString());
}
.....
}
Je sais déjà, que getChildAt est seulement pour les lignes visibles, mais je ne sais pas comment faire autrement.
InformationsquelleAutor erdalprinz | 2013-01-12
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez
myList.getAdapter().getView(i,null,null)
vous obtenez une nouvelle instance de la vue de l'article, essayez de leListView.getChildAt(position)
méthode comme ceci:myList.getCount()
oumyList.getChildCount()
? Ce dernier ressemble plus cohérenteRésolu le Problème avec l'aide d'un ami:
findViewById()
est censé prendre un ID de ressource et pas sur l'index!Je pense que la réponse de @Arius était assez proche pour être une bonne solution. Je veux juste souligner que
View
vous devriez obtenir estView
qui contiennent avecListView
. Si vous avez besoin degetChildAt(position)
liées à votreListView
.Concernant les raisons de la réponse sélectionnée peut parfois jeter un nul sur la "et = (EditText) v. findViewById(i);"
Ne serait-il pas à ce point, essayez de sélectionner l'élément à la position i DANS la vue que vous aviez choisi? Donc si il y a moins d'éléments à l'enfant de vues qu'il y a d'éléments dans la liste, vous obtenez la valeur null en raison de ce que j'essaie de choisir des articles qui n'existent pas.
Peut-être une boucle imbriquée pourrait résoudre ce problème? Ou si vous connaissez déjà l'indice de l'élément dont vous avez besoin, simplement lui donner l'index directement.