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 :

Du bon usage de ArrayList


Sujet :

Android

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut Du bon usage de ArrayList
    bonjour,
    je travaille sur le bluetooth et j'ai besoin de stocker les bluetoothdevice détectés dans une liste.
    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
     
    public class MainActivity extends AppCompatActivity {
     
        private Button btn_decouvrir;
        private BluetoothAdapter mBluetoothAdapter = null;
        private int REQUEST_ENABLE_BT = 1;
        private List BtArrayList = new ArrayList<BluetoothDevice>();
     
        // Create a BroadcastReceiver for ACTION_FOUND.
        private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                    // Discovery has found a device. Get the BluetoothDevice object and its info from the Intent.
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    String deviceName = device.getName();
                    String deviceHardwareAddress = device.getAddress(); // MAC address
                    Log.d("BroadcastReceived", deviceName+" "+deviceHardwareAddress);
                    BtArrayList.add(device);
                }
            }
        };
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            btn_decouvrir = (Button)findViewById(R.id.button_decouvrir);
            btn_decouvrir.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //extraire les bluetoothdevice de la liste
                    Object[] objArray = BtArrayList.toArray(new BluetoothDevice[0]);
                    Log.d("STRANGE", objArray[0].getName());
                }
            });
    Sur le dernier Log.d, objArray[0] n'est pas du type BluetoothDevice comme celui stocké dans le BroadcastReceiver. Apparemment, on ne peut pas faire de cast.
    J'ai besoin d'accéder à un bluetoothdevice (nom et adresse) de cette liste pour m'y connecter par la suite.
    Suis-je sur la bonne voie? Si oui comment cela s'écrit-il?

    Merci...

  2. #2
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    Salut,

    Qu'est censé être objArray ?

    Si tu veux récuperer tes BluetoothDevice ils sont stockés dans BtArrayList. tu as juste à faire BtArrayList.get(0) pour obtenir ton premier BluetoothDevice.
    Donc remplacer tes lignes 34 et 35 par : Log.d("STRANGE", BtArrayList.get(0).getName()); .

    Enfin, ça n'a rien à voir avec ta question, mais il est de coutume de nommer un attribut de classe en commençant par une minuscule btArrayList au lieu de BtArrayList (afin de rendre le code plus lisible).
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    bonjour et merci Drowan pour tes remarques.
    J'ai essayé BtArrayList.get(0).getName()) mais ça reste souligné en rouge avec le message: "Array type expected; found:java.util.List".
    Donc je ne sais plus trop si une ArrayList est vraiment adapté, je vais essayer avec une List...

    Merci.

  4. #4
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    Citation Envoyé par rdtech Voir le message
    "Array type expected; found:java.util.List".
    Donc je ne sais plus trop si une ArrayList est vraiment adapté, je vais essayer avec une List...
    En fait c'est l'inverse qu'il faut faire. Pour pouvoir faire .get(0), il te faut un objet de type Array or btArrayList est déclarer comme List.
    Il faut donc soit la déclarer en tant que ArrayList :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private ArrayList<BluetoothDevice> BtArrayList = new ArrayList<BluetoothDevice>();
    Soit caster ta List en ArrayList au moment de l'appel de .get() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.d("STRANGE", ((ArrayList<BluetoothDevice>)BtArrayList).get(0).getName());
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    Ok. Merci pour vos réponses.

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

Discussions similaires

  1. du bon usage de ONCLICK
    Par devboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/05/2007, 15h52
  2. Bon Usage : Constructeur ou Load
    Par gridin dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/05/2007, 07h48
  3. [Delphi - Firebird] Comment faire bon usage des transactions?
    Par Lili21 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 07/05/2007, 20h59
  4. Quel est le bon usage des fichiers "*.bpk" ?!
    Par bnadem35 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2006, 17h31
  5. [xml] bon usage du xml
    Par Jeddo dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 02/05/2005, 16h49

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