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 :

Mettre une liste dans un AlerteDialog


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 50
    Points
    50
    Par défaut Mettre une liste dans un AlerteDialog
    Bonjour a tous,

    peut être que quelqu'un a dèja rencontrer le même problème que moi...
    en fait, je souhaite alimenter un Alertedialog avec une liste de client que je récupère de ma base de données.

    j'ai trouvé sur le sdk un petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    final CharSequence[] items = {"Red", "Green", "Blue"};
     
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a color");
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }
    });
    AlertDialog alert = builder.create();
    cet exemple prend une liste de CharSequence alors que moi je dispose d'une liste de String.
    quand j'essaye de faire la même chose que ce qui est écrit ci dessus, eclipse me demande de changer ma liste de String en CharSequence.

    voici mon code:
    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
     
    ClientDataBase db = new ClientDataBase(this);
    			final ArrayList<String> listClients =  db.getAllClientsName();
    			db.close();
     
     
    			dialog = new AlertDialog.Builder(this);
    			dialog.setTitle("Temps estimé");
    			dialog.setItems(listClients, new DialogInterface.OnClickListener() {
     
    				@Override
    				public void onClick(DialogInterface dialog, int item) {
    					Toast.makeText(getApplicationContext(), listClients.get(item), Toast.LENGTH_SHORT).show();
    				}
    			});
     
     
    merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    Bonjour a tous,

    j'ai trouvé la solution et je souhaite la partagée avec vous, il se peut que quelqu'un en aurait besoin...

    il s'avère que le AlerteDialog peut également prendre en paramètre un adapter, c'est vraiment cool voici mon code:
    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
     
    final ArrayList<String> listClients =  db.getAllClientsName();
     
    			ListAdapter adapter = new ListClientAdapter(this, listClients);
     
    			dialog = new AlertDialog.Builder(this);
    			dialog.setTitle("Temps estimé");
    			dialog.setAdapter(adapter, new DialogInterface.OnClickListener() {
     
    				@Override
    				public void onClick(DialogInterface dialog, int item) {
    					Toast.makeText(getApplicationContext(), listClients.get(item), Toast.LENGTH_SHORT).show();
     
     
     
    				}
    			});
     
    			dialog.show();
    et franchement ca marche nikel.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 101
    Points
    101
    Par défaut
    Bonjour

    Ton code m'interesse, peut-on remplacer la list par un viewgroup

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    bonjour,

    honnêtement, j'ai pas testé avec un viewGroup.
    en fait, j'avais dèja implémenter un adapter simple pouvoir afficher ma liste de contact dans ma listView.

    voici le code de mon adapter:
    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
     
    package fr.sii.dsi.views;
     
    import java.util.ArrayList;
     
    import android.app.Activity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import fr.sii.dsi.R;
     
    public class ListClientAdapter extends BaseAdapter {
     
    	Activity context;
    	ArrayList<String> clients;
    	int position_client;
     
    	public ListClientAdapter(Activity context,ArrayList<String> clients){
    		this.context = context;
    		this.clients = clients;	
    	}
     
     
    	@Override
    	public int getCount() {
    		return clients.size();  
    	}
     
    	@Override
    	public Object getItem(int position) {
    		return position;
    	}
     
    	@Override
    	public long getItemId(int position) {
    		return position;
    	}
     
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
     
    		LinearLayout monlayout;
    		Myholder myholder;
    		if(convertView == null){
    			LayoutInflater inflater = context.getLayoutInflater();
    			monlayout = (LinearLayout) inflater.inflate(R.layout.modellistclient, null);
    			myholder = new Myholder();
    			monlayout.setTag(myholder);
    			myholder.label = (TextView) monlayout.findViewById(R.id.label);
     
    		}
    		else{
    			monlayout = (LinearLayout)convertView;
    			myholder = (Myholder) monlayout.getTag();
    		}
     
    		myholder.label.setText(clients.get(position));
    		return monlayout;
    	}
     
    //	public void addClient(ArrayList<String> clients, String nom){
    //		clients.set(position_client, nom);
    //		notifyDataSetChanged();
    //	}
     
     
    	private class Myholder{
     
    		TextView label;
     
     
     
     
    	}
     
    }
    et tout ce que j'ai fait par la suite c'est que j'ai fait appel a mon adapter dans le AlerteDialog, pour avoir le choix de plusieurs clients.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 101
    Points
    101
    Par défaut
    J'ai fait un code, mais rien ne s'affiche
    si je te le donne tu peux me dire ou est l'erreur ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    ok, fais voir ton code.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 101
    Points
    101
    Par défaut
    Voici mon code

    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
    public void FicheDialog(String nom){
      		AlertDialog.Builder builder;
        		AlertDialog.Builder ad = new AlertDialog.Builder(this);
        		ad.setTitle(nom);
        		Context mContext = getApplicationContext();
        		LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        		View layout = inflater.inflate(R.layout.custom_dialog,                               
        				(ViewGroup) findViewById(R.id.layout_root));
        		TextView text = (TextView) layout.findViewById(R.id.mydescro);
    		text.setText(this.currentCursor.getString(this.currentCursor
    	.getColumnIndex(SqlHelperActivite.COLUMN_ACTIVITE)));
        		builder = new AlertDialog.Builder(mContext);
        		builder.setView(layout);
        		alertDialog = builder.create();
        ad.show();
        	}
     
    }
    nom est une variable obtenu par le click de la listview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void onListItemClick(ListView l, View v, int position, long id) {
    		Cursor cursor=(Cursor)l.getAdapter().getItem(position);
    		String nom=cursor.getString(cursor.getColumnIndex("nom"));
    		String activite=cursor.getString(cursor.getColumnIndex("activite"));
    Merci pour ton aide

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    salut,

    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ad = builder.create();
    au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alertDialog = builder.create();

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 101
    Points
    101
    Par défaut
    Si j'écris ad = builder.create();

    builder.create(); est surligné
    avec ce message AlertDialog.Builder builder;
    AlertDialog ad = new AlertDialog.Builder(this);
    ad.setTitle(nom);

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

Discussions similaires

  1. Mettre une liste dans une cellule
    Par Mythrandil dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/08/2007, 11h09
  2. comment mettre une image dans une liste avec les values ?
    Par Ekimasu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2007, 17h51
  3. Mettre une liste dans un menu popup
    Par RKOCOCO dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 14/05/2007, 14h09
  4. Mettre une liste de checkbox dans un cadre
    Par eclipse012 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/01/2007, 14h49
  5. Réponses: 5
    Dernier message: 03/02/2004, 14h20

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