ArrayAdapter: данные Json для отправки на счетчик - PullRequest
6 голосов
/ 04 марта 2012

Привет! Я создал действие, которое извлекает данные из текста в формате json и отображает их в виде счетчика.Но я немного запутался с последней частью.ContactList является типом ArrayList, ArrayAdapter не принимает contactList в качестве своего аргумента.Вот мой код

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

Ответы [ 2 ]

3 голосов
/ 04 марта 2012

Это потому, что вы передаете список HashMap, а не массив String. Создайте массив из String, добавьте в него свои контактные данные и передайте его в массив.

вместо использования этого

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

используйте это

* * 1010
1 голос
/ 05 марта 2012

Да, я понял это!

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