2017-10-03 2 views
-2

[RESOLU] J'ai besoin d'une petite aide ici. J'ai un ArrayAdapter qui contient 2 chaînes, je veux montrer à l'utilisateur la 1ère partie de l'ArrayAdapter et quand les utilisateurs cliquent sur un article particulier je veux obtenir l'ID de cet article spécifique et le poster. Dans l'image ci-dessous comme vous pouvez le voir je wamt pour montrer JAVA à l'utilisateur et je veux envoyer l'ID JAVAs lorsque les utilisateurs cliquent sur le bouton.ArrayAdapter - Split 2 chaînes

enter image description here

code:

private class getSkillsList extends AsyncTask<String, Void, Void> { 

    private String dataFetchedFromURL = ""; 

    @Override 
    protected Void doInBackground(String... skillListURL) { 

     try { 
      String newUrl = skillListURL[0]; 
      URL url = new URL(newUrl); 
      HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
      String line = ""; 
      while (line != null) { 
       line = bufferedReader.readLine(); 
       dataFetchedFromURL = dataFetchedFromURL + line; 
      } 
      System.out.print("DATA: " + dataFetchedFromURL); 
      JSONArray root = new JSONArray(dataFetchedFromURL); 
      skillList = new ArrayList<String>(); 
      for (int i = 0; i < root.length(); i++) { 
       JSONObject jsonObjectHoldingCountries = root.getJSONObject(i); 
HashMap<String, Integer> skillsMap = new HashMap<>();     
skillsMap.put(jsonObjectHoldingCountries.optString("lookupValue"), jsonObjectHoldingCountries.getInt("lookupValueId")); 
      } 
     } catch (IOException | JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
ArrayAdapter<String> adapter; 
     for(int i=0; i<skillsMap.size();i++){ 
      skillList.add(String.valueOf(skillsMap.get(i))); 
     } 
      adapter = new ArrayAdapter<String>(Skills.this, android.R.layout.simple_list_item_1, skillList); 
     acSkillTextView.setAdapter(adapter); 
    } 
} 

1 MISE À JOUR:

Maintenant, j'ai mis à jour mon code et stocker la réponse JSON en HashMap avec la première clé est une chaîne et la valeur est entier. Et quand j'ai essayé d'ajouter ces Hashmap dans l'adaptateur dans la méthode post execute, il affiche NULL dans le menu déroulant de saisie automatique.

2 MISE À JOUR:

Je suis ma solution, j'ai inséré toutes mes données reçues dans un HashMap, puis de hashmap i inséré valeur clé dans un tableau et affiché ce tableau dans la liste déroulante en utilisant l'adaptateur. À votre santé! Merci les gars :)

+0

Postez votre code. –

+0

@NabinBhandari Ajouté. – KhanStan99

Répondre

1

Essayez hashmap avec le nom et l'ID et tableau avec juste le nom. en fonction de la position, vous pouvez obtenir votre ID de hashmap.

laissez-moi vous expliquer.

hashmap.put("java","350"); 
hashmap.put("c++","351"); 

font maintenant un tableau de données

array.add("java"); 
array.add("c++"); 

maintenant position de sélection n ° 1, vous pouvez obtenir id respectif.

+0

Je reçois ces données de la réponse API JSON. – KhanStan99

+1

pas de problème. c'est bien . vous pouvez faire Hashmap sur la réception réussie de la réponse de données. et mettre l'adaptateur de tableau après cela –

+0

OK merci, je vais essayer. – KhanStan99