【问题标题】:ArrayAdapter : Json data to be sent to spinnerArrayAdapter : 要发送到 spinner 的 Json 数据
【发布时间】:2012-03-22 09:23:59
【问题描述】:

您好,我创建了一个从 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();
                }
        }
    }

【问题讨论】:

    标签: android json android-arrayadapter android-spinner arrays


    【解决方案1】:

    这是因为您传递的是HashMap 的列表,而不是String 的数组。制作一个String 的数组,在其中添加您的联系人数据并将其传递给数组。

    而不是使用这个

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

    使用这个

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

    【讨论】:

    • 这是正确答案。如果您想存储除简单字符串之外的额外信息,您将需要使用不同的适配器。 (如键和值)
    • 答案正确吗?但它没有显示接受的迹象。是的,在这种情况下,您也必须更改集合类型和适配器类型
    【解决方案2】:

    是的,我想通了!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多