2011-07-27 3 views
1

J'ai un ListActivity avec l'adaptateur suivantAndroid ListView et enregistrer le contenu

this.setListAdapter(new JobTaskItemAdapter(this, jobTaskItems)); 

jobTaskItems est une liste et peuvent varier en taille de 10 à 100 objets. L'adaptateur retourne une nouvelle vue pour chaque composé JobTaskItem: -

[TextView][EditText][TextView] 

L'utilisateur passera par la liste et de modifier les zones de EditText applicables, puis sélectionnez une option Enregistrer. Je dois ensuite parcourir chaque vue de la liste, récupérer le texte modifié et l'enregistrer dans un champ de chaîne JobTaskItem qui sera ensuite enregistré dans la base de données SQLite. Cependant, je ne vois pas comment accéder aux données à partir des vues qui ont été déplacées à l'écran?

Merci

Répondre

0

Ce lien s'est avéré le plus perspicace. Dynamic length of Listview of Edittext not saving input

J'ai implémenté les écouteurs requis et les données sauvegardées dans le modèle. Également enregistré chaque élément de modèle dans la propriété Tag de chaque vue qui s'est également révélée inestimable pour d'autres exigences.

0

Il n'a vraiment rien à voir avec des vues qui ont été pas sur l'écran ... Je pense qu'il ya des questions couple ici, d'une part, vous devez utiliser un ScrollView dans votre mise en page XML afin que vous puissiez j'accède à ces champs, et deuxièmement, je suppose que vous ajoutez dynamiquement ces compilations [TextView] [EditText] [TextView] à votre mise en page en fonction de la taille de jobTaskItems. Ce que je serais dans ce cas, est dans votre boucle qui ajoute dynamiquement ces vues, définissez les références à vos Textviews/EditTexts via un tableau:

TextView []TextViewArray1 = new TextView[jobTaskItems.length]; 
TextView []TextViewArray2 = new TextView[jobTaskItems.length]; 
EditText []EditTextArray = new EditText[jobTaskItems.length]; 

int i = 0; //used as array indexer 
for (your_dynamically_added_views) { 
    YOUR_CODE; 
    TextViewArray1[i] = Dynamic_TextView_1; 
    TextViewArray2[i] = Dynamic_TextView_2; 
    EditTextArray[i] = Dynamic_EditText; 
} 

Ensuite, vous pouvez accéder à ces valeurs plus tard pour la manipulation

1

Lorsque L'élément ListView disparaît de l'écran et peut être détruit/réutilisé. Vous ne pouvez pas compter dessus alors. Vous devriez sauvegarder ces données avant de faire défiler la liste.

Questions connexes