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

Composants graphiques Android Discussion :

Problème adaptation ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut Problème adaptation ListView
    Bonjour,

    J'ai une requête qui séléctionne par nom un client, et l'intégrer donc dans une ListView avec un arrayAdapter. Seulement, je suis embêté puisque si 2 (voire plus) clients portent le même nom, seul un s'affiche..

    Je pense avoir ciblé le problème ce serait cette fonction :
    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
    public client cursorToClient(Cursor c) {
    		if (c.getCount() == 0) {
    			return null;
    		}
    		c.moveToFirst();
    		client cli = new client();
    		cli.setId(c.getInt(NUM_COL_ID));
    		cli.setNom(c.getString(NUM_COL_NOM));
    		cli.setPrenom(c.getString(NUM_COL_PRENOM));
    		cli.setAdresse(c.getString(NUM_COL_ADRESSE));
    		cli.setCp(c.getString(NUM_COL_CP));
    		cli.setVille(c.getString(NUM_COL_VILLE));
    		cli.setMail(c.getString(NUM_COL_MAIL));
    		cli.setTel(c.getString(NUM_COL_TEL));
    		cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
    		cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
    		c.close();
    		return cli;
    	}
    Mon Curseur va à la première ligne mais c'est tout, seulement je vois pas comment faire pour l'adapter, et qu'elle me retourne plusieurs clients..

    J'ai bien tenté :
    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
    public client cursorToClient(Cursor c) {
    		if (c.getCount() == 0) {
    			return null;
    		}
    		for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
    		client cli = new client();
    		cli.setId(c.getInt(NUM_COL_ID));
    		cli.setNom(c.getString(NUM_COL_NOM));
    		cli.setPrenom(c.getString(NUM_COL_PRENOM));
    		cli.setAdresse(c.getString(NUM_COL_ADRESSE));
    		cli.setCp(c.getString(NUM_COL_CP));
    		cli.setVille(c.getString(NUM_COL_VILLE));
    		cli.setMail(c.getString(NUM_COL_MAIL));
    		cli.setTel(c.getString(NUM_COL_TEL));
    		cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
    		cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
                    return cli;}
    		c.close();
    		}
    Si quelqu'un a une solution..
    Merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    il faut bien entendu que tu parcours ton cursor, mais aussi retourné plusieurs client. (via une list par exemple.)

    édite: car le return ferme ta fonction.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    D'accord merci bien Et y a quoi comme autre solution que la liste?

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Je vois pas du tout comment faire pour la ajouter les clients dans la liste.. parce que les fonctions setId, setNom ect.. sont des void... et dans quand je fais listClient.add(new client("setId(...)") ; ça me met une erreur, normal..

    Donc, comment pourrais je procéder?

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    avant de contruire ton premier client tu fait un
    arrayList<client> b=new arrayList<client>();

    et après la construction de ton client tu fais un
    b.add(tonclient);

    et enfin tu retourn ta list
    return b;

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    De cette manière donc??
    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
    public ArrayList<client> cursorToClient(Cursor c) {
    		if (c.getCount() == 0) {
    			return null;
    		}
    		ArrayList<client> listClient = new ArrayList<client>();
    		client cli = new client();
    	    cli.setId(c.getInt(NUM_COL_ID));
    		cli.setNom(c.getString(NUM_COL_NOM));
    		cli.setPrenom(c.getString(NUM_COL_PRENOM));
    		cli.setAdresse(c.getString(NUM_COL_ADRESSE));
    		cli.setCp(c.getString(NUM_COL_CP));
    		cli.setVille(c.getString(NUM_COL_VILLE));
    		cli.setMail(c.getString(NUM_COL_MAIL));
    		cli.setTel(c.getString(NUM_COL_TEL));
    		cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
    		cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
    		for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
    			listClient.add(cli);
    		}
    		c.close();
    		return listClient;
    	    }
     
    }
    Et comment j'utilise cette fonction dans le code?
    Parce qu'avant, il me suffisait de mettre cli = cliBDD.getNomWithClient par exemple..

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    comme tu fais, tu vas ajouter plusieurs client mais identique.

    Il faut que tu crées un nouveau client (et que tu le construise), dans la boucle de parcours de ton cursor (la ou tu fais le .add).

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Ah d'accord, donc, je met dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    client cli = new client();
    	    cli.setId(c.getInt(NUM_COL_ID));
    		cli.setNom(c.getString(NUM_COL_NOM));
    		cli.setPrenom(c.getString(NUM_COL_PRENOM));
    		cli.setAdresse(c.getString(NUM_COL_ADRESSE));
    		cli.setCp(c.getString(NUM_COL_CP));
    		cli.setVille(c.getString(NUM_COL_VILLE));
    		cli.setMail(c.getString(NUM_COL_MAIL));
    		cli.setTel(c.getString(NUM_COL_TEL));
    		cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
    		cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
    ?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    oui

    édite: et juste pour être sur ça donne:
    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
    public ArrayList<client> cursorToClient(Cursor c) {
    		if (c.getCount() == 0) {
    			return null;
    		}
    		ArrayList<client> listClient = new ArrayList<client>();
                    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
    		        client cli = new client();
    	                cli.setId(c.getInt(NUM_COL_ID));
    		        cli.setNom(c.getString(NUM_COL_NOM));
    		        cli.setPrenom(c.getString(NUM_COL_PRENOM));
    		        cli.setAdresse(c.getString(NUM_COL_ADRESSE));
    		        cli.setCp(c.getString(NUM_COL_CP));
    		        cli.setVille(c.getString(NUM_COL_VILLE));
    		        cli.setMail(c.getString(NUM_COL_MAIL));
    		        cli.setTel(c.getString(NUM_COL_TEL));
    		        cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
    		        cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
    			listClient.add(cli);
    		}
    		c.close();
    		return listClient;
    	    }

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    D'accord merci bien

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Maintenant que je renvoie une liste, ça change un peu le code, mais je n'arrive pas l'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
    public class AffichageClientActivity extends MainActivity 
    														  /*implements
    														 OnItemClickListener*/{
    	String nomduclient;
    	clientBDD cliBDD = new clientBDD(this);
    	ListView clientListe;
    	client cli = new client("", "", "", "", "", "", "", 0, 0);
    	ArrayList<client> clients = new ArrayList<client>();
     
    	private ArrayAdapter<String> ClientAdapter = null;
     
    	protected void onCreate(Bundle saveInstanceBundle) {
    		super.onCreate(saveInstanceBundle);
    		setContentView(R.layout.listingclient);
    		clientListe = (ListView) findViewById(R.id.list);
     
    		// récupération de la valeur de l'EditText
    		Bundle objetbundle = this.getIntent().getExtras();
    	    nomduclient = objetbundle.getString("nomclient");
     
    		clientListe = (ListView) findViewById(R.id.list);
    		clientListe.setOnItemClickListener(ItemListener);
    		ClientAdapter = new ArrayAdapter<String>(this,
    				android.R.layout.simple_list_item_1);
    		clientListe.setAdapter(ClientAdapter);
    		cliBDD.open();
    		clients = cliBDD.getClientwithNom(nomduclient);
    		if (clients != null) {
    			// affichage du ou des client(s)
     
    			ClientAdapter.add(cli.getNom() + "  " + cli.getPrenom());
    			ClientAdapter.setNotifyOnChange(true);
     
    		} else {
    			Toast.makeText(
    					this,
    					"Ce client n'est pas enregistré dans la base, vérifier l'orthographe ou bien ajouter un nouveau client.",
    					Toast.LENGTH_LONG).show();
    		}
    		cliBDD.close();
    	}
     
    	public String toString() {
    		String MonStringClient = null;
    		MonStringClient = cli.getNom() + cli.getPrenom();
    		return MonStringClient;
    	}
     
    	private OnItemClickListener ItemListener = new OnItemClickListener() {
    		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    				long arg3) {
    			// recupération du nom du client
     
    			Intent versFidelite = new Intent(getApplicationContext(),
    					FideliteActivity.class);
    			versFidelite.putExtra("nomclient",nomduclient);
    			startActivity(versFidelite);
     
    		}
    	};
     
    }
    Je bloque à partir de clientAdapter.add..
    Comment dire que je veux le nom et le prénom du client?
    Faut faire une boucle aussi non?
    Comment on peut connaître la longueur de la liste?

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2013
    Messages : 70
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par Pepito39 Voir le message
    Comment dire que je veux le nom et le prénom du client?
    taList.get(int position).getNom();
    taList.get(int position).getPrenom();

    Citation Envoyé par Pepito39 Voir le message
    Faut faire une boucle aussi non?
    oui

    Citation Envoyé par Pepito39 Voir le message
    Comment on peut connaître la longueur de la liste?
    taList.size();

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup, t'assures!
    J'en suis donc arriver à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (clients != null) {
    			// affichage du ou des client(s)
    			for (int i=0; i < clients.size();i++){
    			ClientAdapter.add(clients.get(i).getNom() + "  " + clients.get(i).getPrenom());
    			ClientAdapter.setNotifyOnChange(true);
    			}
     
    		} else {
    			Toast.makeText(
    					this,
    					"Ce client n'est pas enregistré dans la base, vérifier l'orthographe ou bien ajouter un nouveau client.",
    					Toast.LENGTH_LONG).show();
    		}
    Edit: Impéccable, ça fonctionne!!! Encore merci!

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

Discussions similaires

  1. Problème avec ListView et multiselect
    Par dadooo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/06/2007, 15h45
  2. [C#]Problème de listview
    Par Fredo02 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 16/06/2007, 15h00
  3. Problème avec listview
    Par Svenna dans le forum Général VBA
    Réponses: 9
    Dernier message: 27/01/2007, 16h55
  4. Problème affichage ListView
    Par sorcer1 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/01/2007, 14h52
  5. [C#] Problème avec ListView
    Par yannick dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2004, 17h29

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