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;
    }




}