Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ArrayAdapter : Json data to be sent to spinner

Hi I have created an activity which pulls data from json format text and displays in a spinner view. But im a little confused with the last part. The contactList is a ArrayList type, ArrayAdapter is not accepting contactList as its arugument. Is Here's my code

 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();
                }
        }
    }
like image 226
yourdroid Avatar asked Mar 04 '12 18:03

yourdroid


2 Answers

This is because you are passing a list of HashMap, and not an array of String. Make an array of String, add your contact data in it and pass it to the array.

instead of using this

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

use this

      ArrayList<String> contactList = new ArrayList<String>();
like image 70
Akram Avatar answered Sep 22 '22 03:09

Akram


Yes, I figured it out!

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();
            }
like image 29
yourdroid Avatar answered Sep 20 '22 03:09

yourdroid