Je souhaite implémenter RadioButton et EditText dans une ligne d'un ListView. J'utilise un ArrayAdapter pour remplir la liste. Mais le problème est que lorsque je sélectionne un RadioButton et que je fais défiler la liste vers le haut et que je défile de nouveau vers le haut, le Radiobutton qui a été sélectionné n'est pas sélectionné. Idem avec le contenu de l'EditText. Le texte est supprimé lorsque je défile.Comment afficher un RadioButton et un EditText dans ListView?
Répondre
Vérifiez votre adaptateur, vous ne faites probablement pas le travail juste sur bindView()
. Vous devez définir à nouveau les valeurs bindView()
.
Je vais reformuler la phrase et vous comprendrez probablement. Le newView()
crée seulement 5 à 10 vues (autant qu'elles correspondent à l'écran), et elles sont réutilisées pour les autres lignes. Si vous avez un ListView
avec 200 lignes, vous avez seulement 5-10 vues, et vous devez vous assurer que vous mettez à jour les vues avec les changements valides dans bindView()
. Vous devez stocker/enregistrer les modifications apportées à un objet pour les réutiliser ultérieurement.
Le problème est que toutes les vues qui quittent l'écran peuvent être détruites pour économiser de la mémoire sur le téléphone. Si le téléphone ne le ferait pas, une liste de 1000 entrées remplirait la mémoire de votre appareil. Pour cette raison, le changement d'état qui arrive au radiobutton et le texte qui a été inséré dans le edittext seront simplement supprimés et si l'utilisateur fait défiler la vue sera recréée.
Vous devez enregistrer l'état du radiobutton et le texte d'édition dans votre adaptateur et réappliquer l'état au moment où vous recréerez la vue pour cet élément spécial dans votre méthode getView.
Pouvez-vous expliquer comment sauvegarder l'état de RadioButton et EditText dans l'adaptateur. .. ??? Merci beaucoup .. – Sujit
Fonction getView dans l'adaptateur de base. Enregistre la valeur edittext et affiche la même chose si convertView n'est pas nul.
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_row_person, null);
holder = new ViewHolder();
holder.PersonNameView = (TextView) convertView.findViewById(R.id.PersonNameView);
holder.SpendAmount = (EditText) convertView.findViewById(R.id.SpendAmt);
holder.SpendAmount.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
int position2 = holder.SpendAmount.getId();
EditText Caption = (EditText) holder.SpendAmount;
Person per= (Person)holder.SpendAmount.getTag();
//SpendAmount is of Double type
if(s.toString().length()>0){
per.setSpendAmount(Double.parseDouble(s.toString()));
per.setFlag(true);}
else{
Toast.makeText(getApplicationContext(), "Please enter some value", Toast.LENGTH_SHORT).show();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
holder.SpendAmount.setTag(listData.get(position));
convertView.setTag(holder);
} else {
((ViewHolder)convertView.getTag()).SpendAmount.setTag(listData.get(position));
holder = (ViewHolder) convertView.getTag();
}
holder.PersonNameView.setText(listData.get(position).getPersonName());
holder.SpendAmount.setText(listData.get(position).getSpendAmount().toString());
return convertView;
}
class ViewHolder {
TextView PersonNameView;
EditText SpendAmount ;
}
- 1. RadioButton dans ListView
- 2. Android: EditText dans ListView
- 3. Comment gérer correctement l'entrée Android EditText dans un ListView?
- 4. Comment définir un EditText au-dessus d'un ListView?
- 5. Comment afficher le clavier numérique sur un EditText dans android?
- 6. Afficher/Masquer Divs dans un ListView
- 7. ListView avec un widget modifiable/modifiable
- 8. Android: Comment placer une image animée dans un EditText que nous pouvons afficher et masquer
- 9. Android: Comment afficher les images de la dans un ListView?
- 10. EditText n'affiche pas au-dessus de ListView
- 11. Comment filtrer correctement un texte dans un ListView?
- 12. Un RadioButton sélectionnable dans DataList
- 13. Comment afficher le HTML dans radioButton dans flex3/4
- 14. Comment valider un RadioButton sur MVC?
- 15. Comment vérifier si un radiobutton est coché dans un groupe
- 16. comment ajouter un radiobutton dans un formulaire de widget wordpress
- 17. Android: Comment faire fonctionner RadioGroup correctement dans un ListView?
- 18. ListView vide, comment puis-je afficher un message sur un ListView lorsqu'il est vide?
- 19. Comment créer un astérisque dans un EditText Android?
- 20. Afficher un ListView sur un widget Home avec AppWidgetProvider
- 21. Comment capturer un événement dans un ListView?
- 22. Comment trouver un ListView dans un DataTemplate?
- 23. créer un contrôle RadioButton dans vb.net
- 24. Afficher la liste des événements dans un GridView/Repeater/ListView
- 25. Android. RadioButtons dans un ListView
- 26. C# Comment modifier un ListView
- 27. un bogue dans android listview et adpater
- 28. images multiples dans un listView
- 29. Comment afficher les caractères chinois dans ListView?
- 30. Put contraint à un EditText
Je ne peux pas vous aider. Pouvez-vous s'il vous plaît expliquer un peu plus avec l'exemple ... merci beaucoup. – Sujit
Postez votre adaptateur pour voir ce que vous faites mal. Pensez que vous avez 5 lignes seulement pour 200 enregistrements, et vous devez les réutiliser tout le temps pour n'importe quelle gamme est affichée. – Pentium10
pouvez-vous s'il vous plaît fournir votre email-ID afin que je puisse vous envoyer le code .. – Sujit