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 :

Probleme pour afficher ou désafficher des CheckBox


Sujet :

Android

  1. #1
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut Probleme pour afficher ou désafficher des CheckBox
    Bonjour,

    j'ai une page contenant un ListView rempli dynamiquement de CheckBox et de TextView.

    J'ai aussi une option "Selectionner"

    Je voudrai que les checkbox soit affichées quand je clic sur l'option "Sélectionner"

    Hors rien ne se passe.

    Voici ci dessous les deux classes ListAdapter pour la construction du listViewer
    Receive pour l'activité représentant la page.

    J'ai mis en gras les parties du code qui sont directement concerné.

    Est ce que vous auriez une idée ?

    merci d'avance

    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
    package rexad.com.smsdatacollect.receiver;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.CheckBox;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Locale;
    import java.util.Map;
    
    import rexad.com.smsdatacollect.R;
    
    /**
     * Created by Yann Binot Local on 20/10/2016.
     */
    
    public class ListAdapter extends ArrayAdapter<SmsData> {
        // List context
        private final Context context;
        // List values
        private final List<SmsData> smsList;
    
        private Map<Integer, CheckBox> checkboxByPos = new HashMap<Integer, CheckBox>();
    
        private Map<Integer, LinearLayout> layoutByPos = new HashMap<Integer, LinearLayout>();
    
        private Map<Integer, TextView> textViewByPos = new HashMap<Integer, TextView>();
    
        View rowView;
    
        public ListAdapter(Context context, List<SmsData> smsList) {
            super(context, R.layout.activity_receive_data, smsList);
            this.context = context;
            this.smsList = smsList;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflater.inflate(R.layout.activity_receive_data, parent, false);
    
            SmsData smsData = getItem(position);
    
            final Calendar cal = Calendar.getInstance();
            String date = smsData.getDate();
            cal.setTimeInMillis(Long.valueOf(date));
            Date time = cal.getTime();
            SimpleDateFormat dateFormatter = new SimpleDateFormat(
                    "yyyy/MM/dd - k:mm", Locale.getDefault());
            date = dateFormatter.format(time);
            String body  = smsData.getBody();
            String[] split = body.split("@");
    
    
            TextView tv = new TextView(context);
    
            tv.setText("DATE "+ date +" (yyyy/MM/dd - hh:mm)\n"+
                    "TEL : "+smsData.getNumber()+ "\n" +
                       "EXP : " + split[5]+"\n"
                     + "VIL : "+ split[1]);
    
            tv.setHeight(350);
    
    
            CheckBox checkBox = new CheckBox(context);
            checkBox.setSelected(false);
            checkBox.setVisibility(View.INVISIBLE);
            checkBox.setId(position);
    
            LinearLayout linearLayout = new LinearLayout(context);
            linearLayout.setOrientation(LinearLayout.HORIZONTAL);
    
            linearLayout.addView(checkBox);
            linearLayout.addView(tv);
    
            checkboxByPos.put(position, checkBox);
            layoutByPos.put(position, linearLayout);
            textViewByPos.put(position, tv);
            return linearLayout;
        }
    
    
        public void updateView(int visibility,View view){
           for (int i = 0; i < smsList.size()-1; i++) {
                CheckBox cb =(CheckBox) view.findViewById(i);
                cb.setVisibility(visibility);
            }
    
    
    
    
            notifyDataSetChanged();
        }
    
    }

    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    package exemple.com.collect;
    
    import android.content.ContentResolver;
    import android.content.Intent;
    import android.database.Cursor;
    import android.net.Uri;
    import android.support.v4.app.LoaderManager;
    import android.support.v4.content.CursorLoader;
    import android.support.v4.content.Loader;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.CheckBox;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import exemple.com.smsdatacollect.receiver.ListAdapter;
    import exemple.com.smsdatacollect.receiver.SmsData;
    
    public class ReceiveDataActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {
    
        ArrayAdapter<SmsData> adapter =null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_receive_data);
    
            getSupportLoaderManager().initLoader(1, null, this);
            final ListView listView = (ListView) findViewById(R.id.receiveSMS);
    
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    SmsData smsData = (SmsData) adapterView.getItemAtPosition(i);
    
                    Toast.makeText(ReceiveDataActivity.this, "Ouvrir message", Toast.LENGTH_SHORT).show();
                    Intent readMessageIntent = new Intent(ReceiveDataActivity.this, ReadMessageActivity.class);
                    readMessageIntent.putExtra("value", smsData.getBody());
    
                    startActivity(readMessageIntent);
    
                }
            });
    
        }
    
        @Override
        public Loader onCreateLoader(int arg0, Bundle arg1) {
            Uri uri = Uri.parse("content://sms/inbox");
            CursorLoader cursorLoader = new CursorLoader(this, uri, null, null, null, null);
            return cursorLoader;
        }
    
        @Override
        public void onLoadFinished(Loader arg0, Cursor cursor) {
    
            List<SmsData> listInput = new ArrayList<SmsData>();
            // Read the sms data and store it in the list
            if (cursor.moveToFirst()) {
                for (int i = 0; i < cursor.getCount(); i++) {
    
                    String phone = cursor.getString(cursor.getColumnIndexOrThrow("address")).toString();
                    String body = cursor.getString(cursor.getColumnIndexOrThrow("body")).toString();
                    String date = cursor.getString(cursor.getColumnIndexOrThrow("date")).toString();
                    if(!body.contains("<smsdata>")){
                        cursor.moveToNext();
                        continue;
                    }
                    SmsData smsdata = new SmsData();
                    smsdata.setNumber(phone);
                    smsdata.setBody(body);
                    smsdata.setDate(date);
                    listInput.add(smsdata);
    
                    cursor.moveToNext();
                }
            }
            adapter = new ListAdapter(this, listInput);
            final ListView listView = (ListView) findViewById(R.id.receiveSMS);
            listView.setAdapter(adapter);
    
        }
    
        @Override
        public void onLoaderReset(Loader arg0) {
    
        }
        //Méthode qui se déclenchera lorsque vous appuierez sur le bouton menu du téléphone
        public boolean onCreateOptionsMenu(Menu menu) {
            //Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
            MenuInflater inflater = getMenuInflater();
            //Instanciation du menu XML spécifier en un objet Menu
            inflater.inflate(R.menu.menusuppression, menu);
            return true;
        }
    
        //Méthode qui se déclenchera au clic sur un item
        public boolean onOptionsItemSelected(MenuItem item) {
            //On regarde quel item a été cliqué grâce à son id et on déclenche une action
            switch (item.getItemId()) {
                case R.id.supprimer:
                    Toast.makeText(ReceiveDataActivity.this, "Paramètres", Toast.LENGTH_SHORT).show();
                    return true;
                case R.id.checkbox:
                    Toast.makeText(ReceiveDataActivity.this, "Selectionner", Toast.LENGTH_SHORT).show();
                    ListView listView = (ListView) findViewById(R.id.receiveSMS);
                    int visibility = View.VISIBLE;
                    if(adapter!=null && adapter instanceof ListAdapter) {
                        ((ListAdapter)adapter).updateView(visibility,listView);
    
    
                    }
    
                    return true;
    
            }
            return false;
        }
    
    
    
    
    }

  2. #2
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Bonjour,

    J'ai résolu mon problème en construisant ma checkbox et mon textView via une ressource xml.
    voir: http://windrealm.org/tutorials/andro...checkboxes.php


    En récupérant avec l'id les checkboxs, alors le code du post précédent fonctionnait


    Bye

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

Discussions similaires

  1. Débuter avec openGL, problem pour afficher des primitives
    Par kosa_nostra dans le forum OpenGL
    Réponses: 1
    Dernier message: 06/11/2011, 20h40
  2. probleme pour afficher des ronds à l'endroit cliqué sur une grille
    Par gnouz dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/12/2009, 01h42
  3. un probleme pour afficher des images AS3
    Par Flashouilleur dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 19/01/2009, 18h28
  4. Probleme pour afficher des printf dans le main
    Par Battosaiii dans le forum C
    Réponses: 4
    Dernier message: 13/03/2006, 10h58
  5. Problème pour afficher un format date dd/MM/yy HH:mm
    Par indy3 dans le forum Hibernate
    Réponses: 5
    Dernier message: 29/03/2005, 10h45

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