Bonjour,
Je me permet de vous exposer mon problème. Je suis actuellement en BTS informatique et je dois faire un projet pour mon examen final. C'est une application sur Mobile qui doit recevoir des informations d'une BDD.
Mon problème est que j'ai une listView constituer d'un adapter personnalisé. Dans mon adapter pour chaque éléments il y a du Text et une checkBox. Mon but est de pouvoir cocher une des CheckBox n'importe quand grâce à un bouton qui est situé à l’extérieur de ma listView. J'ai donc créé un tableau de checkBox(toutes les checkBox présentent dans la listView) et un tableau de booléan (pour savoir quand une checkBox est cochée).
Le problème est que si je ne vois pas (que je ne suis pas sur la vue) des checkBox que je veux cocher grâce au bouton extérieure (Par exemple si la checkBox est tout en bas de la liste et que moi je suis en haut), ça va cocher des checkBox au hasard dans ma vue actuelle (les checBox que je vois à l'écran) et pas celle que je souhaite qui sont plus bas par exemple.
Je sais pas si j'ai été assez clair :/
Voici le code de ma View au cas ou :/
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) selectActivity.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.station_list_item, null);
}
//Handle TextView and display string from your list
TextView textViewListNomStation = (TextView)view.findViewById(R.id.textViewListNomStation);
//Log.i(tag, "nom :" +infosStationsCapteurs.cInfosStationArrayList.get(position).getNomStation() );
textViewListNomStation.setText(infosStationsCapteurs.getcInfosStationArrayList().get(position).getNomStation() + " ID : " + infosStationsCapteurs.getcInfosStationArrayList().get(position).getIdStation());
TextView textViewListInfosStation = (TextView)view.findViewById(R.id.textViewListInfosStation);
String formatInfos = "Lat : " + infosStationsCapteurs.getcInfosStationArrayList().get(position).getPositionGPS().getLatitude() + " Lon : " + infosStationsCapteurs.getcInfosStationArrayList().get(position).getPositionGPS().getLongitude();
textViewListInfosStation.setText(formatInfos);
//Handle buttons and add onClickListeners
CheckBox checkBoxStation = (CheckBox) view.findViewById(R.id.checkBoxStation);
checkBoxTab[position] = checkBoxStation;
checkBoxTab[position].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Log.i(tag, "Bouton :" + buttonView.getId() + " Status " + isChecked);
if (isChecked == true)
{
mCheckedState[position]=true;
selectActivity.getTableauCapteurs().addHashSetstationChecked((cInfosStation)getItem(position));
selectActivity.getTableauCapteurs().createTable();
}
if (isChecked == false){
mCheckedState[position]=false;
selectActivity.getTableauCapteurs().deleteHashSetstationChecked((cInfosStation)getItem(position));
selectActivity.getTableauCapteurs().createTable();
}
}
});
checkBoxTab[position].setChecked(mCheckedState[position]);
return view;
}
Merci Beaucoup 