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 :

Problème de ListeView


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut Problème de ListeView
    Bonjour,

    En fait j'aimerai votre aide pour essayer de trouver une solution à mon problème ; En fait je créé un client LDAP qui va devoir faire une requête pour récupérer les ou présents dans l'annuaire, mais à la ligne du ArrayAdapter ça me met que le constructeur n'est pas définie alors qu'il n'y a, je crois aucune erreur :

    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
     
    // Initialise entryMap et entries afin d'afficher le résultat dans une liste
               entryMap    = new HashMap<String, SearchResultEntry>(0);
               entries     = new LinkedList<SearchResultEntry>();   
     
               mButtonConnect = (Button) findViewById(R.id.buttonConnect);
               mButtonConnect.setOnClickListener(new View.OnClickListener() {             
                   @Override
                   public void onClick(View view) {
                       Log.d(TAG, "onCreate");
     
                       /*SocketFactory socketFactory = null;
                        
                       // Utilisation du ssl :
                       final SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
                       try {
                           socketFactory = sslUtil.createSSLSocketFactory();
                       } catch (Exception e) {
                           Log.d(TAG, "SSL erreur", e);                       
                       }*/
     
                       final LDAPConnectionOptions options = new LDAPConnectionOptions();
                       options.setAutoReconnect(true);
                       options.setConnectTimeoutMillis(30000);
                       options.setFollowReferrals(false);
                       options.setMaxMessageSize(1024*1024);
     
                       // Connection à l'annuaire LDAP
                       try {
                           LDAPConnection connection = new LDAPConnection(options,mHost,mPort, mBind, mPassword);
     
                           // Vérifie si la connexion est faite
                           if (connection.isConnected())   mEtatConnect.setText("Connecté à LDAP");
                           else                            mEtatConnect.setText("Erreur de connexion");
     
                           // Pour le test on lance une recherche sur l'annuaire
                           // Affiche la recherche dans une liste
                           try {
                               SearchResult searchResults = connection.search(mBase, SearchScope.SUB, mSearchFilter);
                               Log.i(TAG, searchResults.getEntryCount() + " entrées");
                               mEtatConnect.setText(searchResults.getEntryCount() + " entrées");                                                                              
     
                               entryMap = new HashMap<String, SearchResultEntry>(entries.size());
     
                               final String[] entryStrings = new String[entries.size()];
                               for (int i = 0 ; i < entryStrings.length ; i++)
                               {                          
                                   final SearchResultEntry e = entries.get(i);
                                   entryMap.put(entryStrings[i], e);                                                      
                               }
     
                               Arrays.sort(entryStrings);
     
                               final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                                       android.R.layout.simple_list_item_1, entryStrings);
                               mListeSearch.setAdapter(adapter);
     
                               Toast.makeText(ClientActivity.this, "Fin de la recherche", Toast.LENGTH_LONG).show();
     
                           } catch (LDAPSearchException e) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                           }                      
                       } catch (LDAPException le) {
                           Log.d(TAG, "Connection LDAP", le);
                           Toast.makeText(ClientActivity.this, "Erreur lors de la connexion au serveur LDAP", Toast.LENGTH_LONG).show();
                       }
    Voici la partie où je me connecte au serveur LDAP, puis je lance une recherche et enfin j'essaye d'afficher la recherche dans un listeView...

    Si quelqu'un vois un erreur... Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Trop de code dans une classe anonyme....

    Le View.OnClickListener devrait être tout petit, et appeler une fonction de l'activité (séparation évenement / action).

    En plus cela éviterait le problème actuel ("this" faisant référence à l'objet View.OnClickListener, qui n'est pas un contexte). Eclipse l'écrit en rouge si on laisse la souris sur l'erreur: pas de constructeur ArrayAdapter(View.OnClickListener,int,String[])

    D'autre part il doit y avoir un schblik là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    final String[] entryStrings = new String[entries.size()];
    // ici entryStrings est un tableau de entries.size() references sur des String (pour l'instant toutes nulles).
    for (int i = 0 ; i < entryStrings.length ; i++)
    {                          
        final SearchResultEntry e = entries.get(i); // pas d'utilité au 'final' ici
        // entryStrings[i] est null ! donc on fait entryMap.put(null,e); tout le temps
        entryMap.put(entryStrings[i], e);                                                      
    }
    // sort inutile sur des strings toutes nulles.
    Arrays.sort(entryStrings);

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Merci pour ta réponse, mais je ne vois pas trop comment séparer le code

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    J'imagine que l'on est dans une activité ?
    Donc un truc genre:
    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
     
    class MyActivity extends Activity
    {
         @Override
         public void onCreate(Bundle savedInstanceState)
         {
               entryMap    = new HashMap<String, SearchResultEntry>(0);
               entries     = new LinkedList<SearchResultEntry>();   
               mButtonConnect = (Button) findViewById(R.id.buttonConnect);
               mButtonConnect.setOnClickListener(new View.OnClickListener() {             
                   @Override
                   public void onClick(View view) {
                       MyActivity.this.onCreate();
                   }
               }
         }
     
         void onCreate()
         {
                       Log.d(TAG, "onCreate");
     
                       /*SocketFactory socketFactory = null;
     
                       // Utilisation du ssl :
                       final SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
                       try {
                           socketFactory = sslUtil.createSSLSocketFactory();
                       } catch (Exception e) {
                           Log.d(TAG, "SSL erreur", e);                       
                       }*/
     
                       final LDAPConnectionOptions options = new LDAPConnectionOptions();
                       options.setAutoReconnect(true);
                       options.setConnectTimeoutMillis(30000);
                       options.setFollowReferrals(false);
                       options.setMaxMessageSize(1024*1024);
     
                       // Connection à l'annuaire LDAP
                       try {
                           LDAPConnection connection = new LDAPConnection(options,mHost,mPort, mBind, mPassword);
     
                           // Vérifie si la connexion est faite
                           if (connection.isConnected())   mEtatConnect.setText("Connecté à LDAP");
                           else                            mEtatConnect.setText("Erreur de connexion");
     
                           // Pour le test on lance une recherche sur l'annuaire
                           // Affiche la recherche dans une liste
                           try {
                               SearchResult searchResults = connection.search(mBase, SearchScope.SUB, mSearchFilter);
                               Log.i(TAG, searchResults.getEntryCount() + " entrées");
                               mEtatConnect.setText(searchResults.getEntryCount() + " entrées");                                                                              
     
                               entryMap = new HashMap<String, SearchResultEntry>(entries.size());
     
                               final String[] entryStrings = new String[entries.size()];
                               for (int i = 0 ; i < entryStrings.length ; i++)
                               {                          
                                   final SearchResultEntry e = entries.get(i);
                                   entryMap.put(entryStrings[i], e);                                                      
                               }
     
                               Arrays.sort(entryStrings);
     
                               final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                                       android.R.layout.simple_list_item_1, entryStrings);
                               mListeSearch.setAdapter(adapter);
     
                               Toast.makeText(ClientActivity.this, "Fin de la recherche", Toast.LENGTH_LONG).show();
     
                           } catch (LDAPSearchException e) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                           }                      
                       } catch (LDAPException le) {
                           Log.d(TAG, "Connection LDAP", le);
                           Toast.makeText(ClientActivity.this, "Erreur lors de la connexion au serveur LDAP", Toast.LENGTH_LONG).show();
                       }
     
                }
    }

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Bonjour,

    Oui j'ai organisé mon code de cette manière, mais je n'arrive toujours pas à afficher... Je ne comprends vraiment pas comment faire!!

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

Discussions similaires

  1. probléme code listeview
    Par Jaafar_scorpion dans le forum Android
    Réponses: 4
    Dernier message: 28/03/2011, 13h56
  2. Problème pour remplir une listeView multicolonne
    Par sebac dans le forum VB.NET
    Réponses: 9
    Dernier message: 29/07/2009, 03h19
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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