IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Appeler un DatePicker a partir d'un EditText


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut Appeler un DatePicker a partir d'un EditText
    Bonjour a tous,
    j'ai un nouveau soucis que j'ai du mal a implanter dans mon code.

    Je voudrais appeler un DatePicker a partir d'un EditText qui est basé sur un ArrayAdapter.

    Toutes les recherches que j'ai fait sur le net se basaient sur une activity, et j'ai du mal a trouver un code fonctionnel.

    Voici un extrais de mon code que j'avais pensé utiliser:

    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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    public class MorceauFilsAdapter extends ArrayAdapter<Fils> {
     
        private int mode;
        private SparseArray<String> editedValues;
     
        public MorceauFilsAdapter(Context context, List<Fils> fils, int mode) {
            super(context, R.layout.activity_morceau_fils, R.id.TV_mFils_Nom,fils);
            this.mode = mode;
            this.editedValues = new SparseArray<String>();
        }
     Calendar myCalendar = Calendar.getInstance();
     
        DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
     
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
     
                String myFormat = "yyyyMMdd";
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.FRANCE);
                //holder.etVal.setText(sdf.format(myCalendar.getTime())); <-- Ici ca coince, je vois pas comment mettre a jour mon EditText
            }
     
        };
     
        private class ViewHolder {
            public TextView tvNom;
            public EditText etVal;
            public Switch swBool;
            public TextWatcher watcher;
        }
     
        public View getView(int position, View convertView, ViewGroup parent){
            View ret = super.getView(position,convertView,parent);
     
            ViewHolder holder = (ViewHolder) ret.getTag();
     
            if (holder == null) {
                holder = new ViewHolder();
                holder.tvNom = (TextView)ret.findViewById(R.id.TV_mFils_Nom);
                holder.etVal = (EditText)ret.findViewById(R.id.ET_mFils_Val);
                holder.swBool = (Switch)ret.findViewById(R.id.switch1);
                ret.setTag(holder);
            } else {
                holder.etVal.removeTextChangedListener(holder.watcher);
            }
     
            Fils fils = getItem(position);
            holder.tvNom.setText(fils.getNomFils());
            int type = fils.getTypeFils();
            String val = fils.getValeurFils();
     
            String value = this.editedValues.get(position);
            if (value == null)
                value = val;
            holder.etVal.setText(value);
     
            if (type < MaDatabase.TYPE_BOOL)
            {
                holder.etVal.setVisibility(View.VISIBLE);
                holder.swBool.setVisibility(View.GONE);
            }
            if (type == MaDatabase.TYPE_TEXT)
                holder.etVal.setInputType(InputType.TYPE_CLASS_TEXT);
            if (type == MaDatabase.TYPE_DATE) {
                holder.etVal.setFocusable(false);
                            holder.etVal.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                    @Override
                    public void onFocusChange(View v, boolean hasFocus) {
                        new DatePickerDialog(getContext(), date, myCalendar
                                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
                        int toto = 1;
                    }
                });
     
            }
            if (type == MaDatabase.TYPE_INT)
                holder.etVal.setInputType(InputType.TYPE_CLASS_NUMBER);
            if (type == MaDatabase.TYPE_BOOL) {
                holder.etVal.setVisibility(View.GONE);
                holder.swBool.setVisibility(View.VISIBLE);
                if (getContext().getString(R.string.yes).equals(value))
                {
                    holder.swBool.setChecked(true);
                    holder.swBool.setText(getContext().getString(R.string.yes));
                    holder.etVal.setText(getContext().getString(R.string.yes));
                }
                else
                {
                    holder.swBool.setChecked(false);
                    holder.swBool.setText(getContext().getString(R.string.no));
                    holder.etVal.setText(getContext().getString(R.string.no));
                }
                final ViewHolder finalHolder = holder;
                holder.swBool.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (finalHolder.swBool.isChecked()) {
                            finalHolder.swBool.setText(getContext().getString(R.string.yes));
                            finalHolder.etVal.setText(getContext().getString(R.string.yes));
                        } else {
                            finalHolder.swBool.setText(getContext().getString(R.string.no));
                            finalHolder.etVal.setText(getContext().getString(R.string.no));
                        }
                    }
                });
            }
    J'utilise un ViewHolder, et un SparseArray pour sauvegarder les données de mes EditText.

    Autant pour le switch, c’était plutôt facile a gérer, mais pour la date, j'avoue que je coince un peu.

    Pourriez vous m'aider pliz ?

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut
    Finalement, je m'en suis sorti en créant une classe dédié au DatePicker:

    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
        private class setDate implements View.OnFocusChangeListener, DatePickerDialog.OnDateSetListener {
     
            private EditText editText;
            private Calendar myCalendar;
     
            public setDate(EditText editText) {
                this.editText = editText;
                this.editText.setOnFocusChangeListener(this);
                myCalendar = Calendar.getInstance();
            }
     
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                // this.editText.setText();
     
                String myFormat = "yyyyMMdd"; //In which you need put here
                SimpleDateFormat sdformat = new SimpleDateFormat(myFormat, Locale.FRANCE);
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
     
                editText.setText(sdformat.format(myCalendar.getTime()));
     
            }
     
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // TODO Auto-generated method stub
                if (hasFocus) {
                    new DatePickerDialog(getContext(), this, myCalendar
                            .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                            myCalendar.get(Calendar.DAY_OF_MONTH)).show();
                }
            }
        }
    Que j’appelle par la suite avec un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            if (type == MaDatabase.TYPE_DATE) {
                setDate fromDate = new setDate(holder.etVal);
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ASP][D8] Appel WebForm2.aspx a partir d'une WenForm1.aspx
    Par pop bob dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 12/09/2005, 15h06
  2. Réponses: 2
    Dernier message: 01/07/2005, 14h54
  3. Réponses: 4
    Dernier message: 01/06/2005, 17h01
  4. [SERVLET]Appel d'un fichier à partir d'une servlet
    Par fchafia dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/03/2005, 12h21
  5. appel d'une fonction à partir d'un popup
    Par villeneuvejsp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/12/2004, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo