janoka Posté(e) 1 septembre 2013 Share Posté(e) 1 septembre 2013 Bonjour, J'ai un layout qui contient une ListView et un bouton supprimer. Sur chaque ligne de ma listView il y a un radio button et un textView. L'Activity liée au layout hérite de ListActivity. Dans cette activity je rempli ma listView avec CursorSimpleAdapter. Sur cette écran, l'utilisateur peut : .soit cliquer sur une ligne, et dans ce cas une autre activity apparait. Pour cela j'utilise la méthode setOnItemClick, pas de souci. .soit selecionner une ligne par le biai d'un radio button et ensuite appuyer le bouton supprimer pour supprimer la ligne de la listView et ainsi supprimer les infos de cette ligne dans ma base de donnée. Et la je ne sais pas comment faire. Déjà est-ce que c'est possible ? apparement oui avec un customAdapter d'après certains topics.... L'idéal serait de récupérer l'id de ma ligne par le radio button selectionné et de faire appel a une méthode pour supprimer cette ligne avec en parametre l'id lors du click sur le bouton supprimer. Mais comment faire ? Voici le code de mon Activity public class LesComptes extends ListActivity { private RadioButton RbtnSelect = null; private Button BtnSup; private ListView LvCompte; private DBAdapter db; private Cursor cursor; private int idUtilisateur; private int idCompte; private Utilisateur utilisateur; private Compte compte; private Bundle bundle; final Context context = this; //constante pour les alertDial private final static int ID_NOT_SELECT = 0; private final static int ID_NOT_COMPTE = 1; public Utilisateur getUtilisateur(){ return utilisateur; } public void setUtilisateur(Utilisateur utilisateur){ this.utilisateur = utilisateur; } public Compte getCompte(){ return compte; } public void setCompte(Compte compte){ this.compte = compte; } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.les_comptes); RbtnSelect = (RadioButton)findViewById(R.id.RbtnSelect); BtnSup = (Button)findViewById(R.id.BtnSup); BtnApercu = (Button)findViewById(R.id.BtnApercu); LvCompte = (ListView)findViewById(android.R.id.list); db = new DBAdapter(getApplicationContext()); db.open(); bundle = this.getIntent().getExtras(); utilisateur = new Utilisateur(); compte = new Compte(); ListView(); AddListenerOnBtnSupprimer(); } public void ListView(){ //On récupère les données du Bundle idUtilisateur = (Integer) bundle.get("COL_ID"); //selectionne liste de compte de l'utilisateur cursor = db.SelectDesComptesUtilisateur(idUtilisateur); if(cursor.getCount() != 0){ cursor.moveToFirst(); startManagingCursor(cursor); try{ //apparaitre les données d'un compte sur la liste SimpleCursorAdapter adapte = new SimpleCursorAdapter(this, R.layout.listeview_compte, cursor, new String[]{"COL_BANK","COL_TITRE","COL_TOTAL"},new int[]{R.id.TvBank,R.id.TvNom,R.id.TvMontant}); LvCompte.setAdapter(adapte); LvCompte.setChoiceMode(ListView.CHOICE_MODE_SINGLE); //click sur une ligne de la liste et une nouvelle fenetre apparait LvCompte.setOnItemClickListener(new OnItemClickListener(){ @Override @SuppressWarnings("unchecked") public void onItemClick(AdapterView<?> a, View v, int position, long id) { compte.setIdCompte((int)id); //méthode pour la liste des transactions //id du compte dans le bundle bundle.putInt("Id_compte",compte.getIdCompte()); Intent intent = new Intent(LesComptes.this, LesTransactions.class); intent.putExtras(bundle); startActivity(intent); } }); }catch(Exception e){ Log.e("tag", "BOUM !", e); } }else{ LvCompte = (ListView)findViewById(android.R.id.list); BtnSup.setEnabled(false); showDialog(ID_NOT_COMPTE); } Merci pour vos suggestions. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 2 septembre 2013 Share Posté(e) 2 septembre 2013 Bonjour, Pour ton pb de suppression d'un élément de ta liste, je ne passerais pas par un bouton radio (et pas besoin d'un CustomAdapter). Le problème du bouton radio dans chaque élément de la liste, c'est que tu vas avoir un souci de conflit entre le liste du click d'un élément (géré par la ListView) et le click de séléction du bouton radio (géré par le bouton radio). En fait ce dernier ne verra jamais le click, puisqu'il aura été intercepté par la ListView Il y a une meilleure solution, c'est d'utiliser par ex le click long sur un élément de la liste; tu positionnes un Listener pour clicks longs (setOnItemLongClickListener sur la ListView), qui te permettra d'afficher par exemple un menu contextuel te donnant le choix d'action complémentaire à faire sur l'élément sélectionné) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nsvir Posté(e) 2 septembre 2013 Share Posté(e) 2 septembre 2013 Bonjour à toi, J'ai fait presque l'équivalent de ce que tu essaye de faire.J'ai un listview avec une icone suppression et quand l'utilisateur click dessus l'element se supprime.Pour mettre ça en place j'ai utilisé un ArrayAdapter et j'ai override getView. Comme ceci: private class MyArrayAdapter extends ArrayAdapter<T> { @Override public View getView(int position, View convertView, ViewGroup parent) { View itemView = convertView; // Make sure we have a view to work with if (itemView == null) { itemView = getActivity().getLayoutInflater().inflate(layout de ton item, parent, false); } // Manager deleteButton ImageView deleteButton = (ImageView) itemView.findViewById(R.id.deleteImage); deleteButton.setVisibility(View.VISIBLE); deleteButton.setClickable(true); deleteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // delete ton item ou appelle ta class qui va sauvegarder position. } }); return itemView; } } Si ça te semble flou je te conseil de regarder des tutoriels sur la création de listview a partir d'un arrayadapter personnnalisé.En espérant t'avoir aidé :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
janoka Posté(e) 7 septembre 2013 Auteur Share Posté(e) 7 septembre 2013 re bonjour, Merci pour vos infos, je pense persister vers mon idée, et si cela fonctionne je partagerai mon code avec plaisir. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.