Bonjour à tous =)

Je cherche à créer une activité (qui étend Fragment) dans laquelle on peut ajouter (grâce à un boutton) dynamiquement N formulaires (contenant un EditText et deux boutons radio pour le moment).

Alors après quelques recherches et essais j'arrive à peu près à mon résultat, lorsque j'appuis 36 fois sur mon boutton "ajouter forumaire", les formulaires se créent un par un (les uns en desosus des autres) et je peux naviguer d'un forumaire à l'autre en scrollant simplement de haut en bas avec mon doigt.

Et je me suis dis "raaAAAA ça marche c'est nickel !", mais j'ai constaté deux bug hier assez génant que je n'arrive pas à comprendre/résoudre ^^

- si je créé par exemple 10 formulaires et qu'ensuite je modifie la valeur d'un radio boutton du premier formulaire, alors les forumaire 4-7-10 'subissent' la même modification. Si je fais la même opération au deuxième forumaire, ce sont les forumaires 5 et 8 qui 'subissent' les mêmes modifs que le forumaire 2. Je ne comprend absoulment pas d'où peut sortir cet espèce de bug/cycle xD
- lorsque je test l'application sur mon Android (HTC Desire HD), je créé un formulaire. Ensuite je 'click' dans le champs à éditer du formulaire 1 et je perd desuite le 'focus' dès que mon clavier virtuel apparait (donc je dois re'clicker' dans le champs texte après que le clavier virtuel est apparu, ce qui est un peu chiant..). Une fois le premier caractère entré , je reperd le focus ! Je reclick dans la zone champs texte...et la je peux entrer autant de caractères que je veux sans perdre le focus (vraiment byzarre..).
Si je créé ensuite un deuxième formulaire (et ayant quitté le clavier virtuel entre temps parce qu'il prend pas mal de place sur l'écran) et que je click sur son champs texte, non seulement je perd le focus dès que je veux entrer le premier caractère comme pour le premier formulaire. Mais pire encore, la valeur du champs texte du premier formulaire s'inscrit automatiquement dans le champs texte du deuxième formulaire comme si les deux formulaires s'étaient intervertit ! Et ce comportement-là (perte de focus, interversion de valeur de champ...) je ne le rencontre pas sur l'émulateur Android d'éclipse..
Donc pareil que le premier bug, je ne sais pas du tout d'où ça pourrait provenir, donc difficile de faire des recherches efficaces sur le net :/

Voici par quelles structures je suis passé pour créér mon bazard :

Ma Main activité qui étend "FragmentActivity":
- contient en static une ArrayList 'donnees_des_formulaires' de données 'donnees_dun_formulaire'
- affiche le 'fragment' courant

Mon activité 'secondaire' qui étend "Fragment" :
- Contient la listView de mon xml, l'adapteur (adapteur personnalisé) et le boutton pour ajouter un novueau formulaire
Voici le code principal de cette classe (rien de sorcier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
	ViewGroup root = (ViewGroup) inflater.inflate(R.layout.secondaire,null);
	listview = (ListView) root.findViewById(R.id.listview);
	adaptor = new custom_adaptor(root.getContext(),R.layout.formulaire, Main.donnees_des_formulaires);
	listview.setAdapter(adaptor);
	ajouter_formulaire = (Button) root.findViewById(R.id.ajouter_formulaire);
	ajouter_formulaire.setOnClickListener(new OnClickListener() {
		public void onClick(View v) {
			Main.donnees_des_formulaires.add(new donnees_dun_formulaire()); //initilise toutes les variables de l'objet à null
			adaptor.notifyDataSetChanged();
		}
	});
	return root;
}
Mon curseur personnalisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
public class custom_adaptor extends ArrayAdapter<donnees_dun_formulaire> implements TextWatcher{
 
	Context context;
	int layoutResourceId;  
	Holder holder;
	ArrayList<donnees_dun_formulaire> liste;
 
	public Adaptor_cavite_item(Context context, int layoutResourceId, ArrayList<donnees_dun_formulaire> data)
	{
		super(context,layoutResourceId,data);
		this.layoutResourceId = layoutResourceId;
		this.context=context;
		this.liste = data;
		this.holder = new Holder();
	}
 
	public View getView(int position, View convertView, ViewGroup parent){
 
		View row = convertView;
 
		if(row==null){
		    LayoutInflater inflater = ((Activity)context).getLayoutInflater();
		    row = inflater.inflate(layoutResourceId, parent,false);
		    this.holder.champs_texte = (EditText)row.findViewById(R.id.champs_texte);
		    this.holder.champs_texte.addTextChangedListener(this);
		    row.setTag(this.holder);
		}
		else{this.holder=(Holder)row.getTag();}
		return row;
	}
 
	static class Holder
	{ 
		EditText champs_texte;
	}
	public void afterTextChanged(Editable arg0) {}
	public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}
	public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
		Log.i("onTextChanged", "event reçu");
		//il faudrait modifier la structure 'Main.donnees_des_forumaires' ici
	}
}
L'objet "donnees_dun_formulaire" est très simple. Mes deux layout aussi (l'un qui contient une "listview" et l'autre qui contient l'ensemble des vues qui composent un formulaire).

Désolé pour ce post un peut long... mais je vois difficilement comment j'aurai pu éviter de pondre un pavé
Et un grand Merci d'avance pour un coup d'main