2012-03-04 13 views
5

こんにちは、json形式のテキストからデータを取り出し、スピナービューで表示するアクティビティを作成しました。しかし、私は最後の部分と少し混乱しています。 contactListはArrayList型であり、ArrayAdapterはcontactListをそのarugumentとして受け入れていません。 が ですここでは、Stringの配列HashMapのリストを渡し、およびされていないので、これは私のコードArrayAdapter:スピナーに送信するJsonデータ

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(); 
       } 
     } 
    } 

答えて

1

はい、私はそれを考え出しました!

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

です。 Stringの配列を作成し、連絡先データをその配列に追加して配列に渡します。

の代わりに、この

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

を使用して使用することは、この

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

これは正解です。単純な文字列以外の追加情報を保存する場合は、別のアダプタを使用する必要があります。 (キーや値など) – Knossos

+0

答えは正しいですか?それは受け入れられた兆候を示さない。 そうなら、コレクションタイプとアダプタタイプを変更する必要があります – Akram

+0

これを解決する方法http://stackoverflow.com/questions/29446088/how-to-get-spinner-values-in-textview –

関連する問題