2012-03-04 13 views
5

Witam Stworzyłem działanie, które pobiera dane z tekstu w formacie json i wyświetla w widoku przędzarki. Ale jestem trochę zdezorientowany z ostatnią częścią. Lista kontaktów jest typem ArrayList, ArrayAdapter nie przyjmuje listy kontaktów jako jej argumentu. Czy Oto mój kodArrayAdapter: Json dane do wysłania na spinner

public class RegisterForEventActivity extends Activity { 

     private static String url = "http://10.0.2.2/Contacts.txt"; 
     private static final String TAG_NAME = "name"; 
     private static final String TAG_CONTACTS = "contacts"; 

     JSONArray jsonArray = null; 

     Spinner areaspinner; 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.register_layout); 


     // Hashmap for ListView 
      ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); 

       // Creating JSON Parser instance 
       JSONParser jParser = new JSONParser(); 

       // getting JSON string from URL 
       JSONObject json = jParser.getJSONFromUrl(url); 

       try { 
        // Getting Array of Contacts 
        jsonArray = json.getJSONArray(TAG_CONTACTS); 

        final String[] array_spinner = new String[jsonArray.length()]; 

        // looping through All Contacts 
        for(int i = 0; i < jsonArray.length(); i++){ 

         JSONObject c = jsonArray.getJSONObject(i); 

         // Storing each json item in variable 
         String name = c.getString(TAG_NAME); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_NAME, name); 


         // adding HashList to ArrayList 
         contactList.add(map); 

ArrayAdapter<String> adapter = 
           new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, contactList);  
         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
         areaspinner.setAdapter(adapter); 
        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
     } 
    } 

Odpowiedz

1

Tak, zorientowaliśmy się!

sp=(Spinner)findViewById(R.id.spinner1); 

    // Hashmap for ListView 


      // Creating JSON Parser instance 
      JSONParser jParser = new JSONParser(); 

      // getting JSON string from URL 
      JSONObject json = jParser.getJSONFromUrl(url); 
      System.out.println("Hello"); 
      try { 
       // Getting Array of Contacts 
       jsonArray = json.getJSONArray(TAG_CONTACTS); 

       final String[] items = new String[jsonArray.length()]; 

       // looping through All Contacts 
       for(int i = 0; i < jsonArray.length(); i++){ 

        JSONObject c = jsonArray.getJSONObject(i); 
        // Storing each json item in variable 

        String name = c.getString(TAG_NAME); 


        items[i]=c.getString(TAG_NAME); 
        System.out.println("Hello events "+items); 
       } 

       ArrayAdapter<String> adapter = 
         new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, items);  
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       sp.setAdapter(adapter); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
3

To dlatego, że są przechodzącą lista HashMap, a nie tablicę String. Utwórz tablicę z String, dodaj swoje dane kontaktowe i przekaż ją do tablicy.

zamiast korzystania z tej

 ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); 

wykorzystanie tego

 ArrayList<String> contactList = new ArrayList<String>(); 
+1

To jest poprawna odpowiedź. Jeśli chcesz przechowywać dodatkowe informacje inne niż prosty ciąg, będziesz musiał użyć innego adaptera. (taki jak klucz i wartość) – Knossos

+0

Odpowiedź jest poprawna? ale nie pokazuje akceptowanego znaku. tak, w tym przypadku musisz zmienić typ kolekcji i typ adaptera też – Akram

+0

jak rozwiązać ten http://stackoverflow.com/questions/29446088/how-to-get-spinner-values-in-textview –