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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
static ArrayList<donnees_dun_formulaire> liste; //liste créé dans la classe MAIN
public class custom_adaptor extends ArrayAdapter<donnees_dun_formulaire> implements TextWatcher{
Context context;
int layoutResourceId;
Holder holder;
public Adaptor_cavite_item(Context context, int layoutResourceId, ArrayList<donnees_dun_formulaire> data)
{
super(context,layoutResourceId,data);
this.layoutResourceId = layoutResourceId;
this.context=context;
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);
this.holder.type = (Spinner) row.findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter_type=ArrayAdapter.createFromResource(context, R.array.spinner_data, android.R.layout.simple_spinner_item);
adapter_type.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.holder.type.setAdapter(adapter_type);
row.setTag(this.holder);
}
else{this.holder=(Holder)row.getTag();}
// Je test si l'élément courant de mon ArrayList est initialisé à null
if(MAIN.liste.get(position).type==null && MAIN.liste.get(position).champs_texte==null){
MAIN.liste.get(position).type = this.holder.type;
//MAIN.liste.get(position).champs_texte = this.holder.champs_texte;
}
// Opération inutile si l'élément courant de l'ArrauList était vide. Dans tous les cas, j'affecte au Holder les objets de l'élément courant de l'ArrayList. Donc dans mon esprit c'est ici que la vue courante via le holder récupère la bonne information du bon élément de l'ArrayList
this.holder.type = MAIN.liste.get(position).type;
this.holder.champs_texte = MAIN.liste.get(position).champs_texte;
//Ici je colle au spinner du formulaire de la vue courante un listener, ce listener va directement modifier les données de l'élément de l'ArrayList 'globale'
this.holder.type.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
MAIN.liste_cavite.get(position).type.setSelection(arg2);
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
return row;
}
static class Holder
{
//EditText champs_texte;
Spinner type;
}
/*
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
}
}
*/ |
Partager