[{"id":"32","hyname":"建筑装修"},{"id":"15","hyname":"机械制造"},{"id":"16","hyname":"电子通信"},{"id":"21","hyname":"计量监测"},{"id":"28","hyname":"化验检测"},{"id":"19","hyname":"地质勘探"},{"id":"23","hyname":"农林牧渔"},{"id":"30","hyname":"机械冷加工"},{"id":"31","hyname":"机械热加工"},{"id":"22","hyname":"物资储运"},{"id":"24","hyname":"餐饮服务"}]
一组json数据,如何将这组据填充到Spinner组件中,并显示hyname字符,取值时取id的值呢?请指教

解决方案 »

  1.   

    先解析数据,放到list或者vector中,然后再显示
      

  2.   

    先将数据解析好,保存为一个arraylist,然后自定义一个baseadapter或者直接ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.spinnerbg(一个textview就行), hyname的数组);然后spinner.setAdapter(adapter);
    点击时取id的值,只要在spinner.setOnItemSelectedListener里面实现就可以了
      

  3.   

    处理方法 先下载JSON android 解析库 GSON 然后把JSON解析成数组 
      

  4.   

    1,创建实体类 Test   
      public void Test {
         private String id ;
         private String name;
        生成get和set方法
    }
    //jsonString 就是你拼的或者服务器返回的字符串
    2.public static ArrayList<Test> getNewsList(String jsonString) throws JSONException {
                    
    JSONArray arr = new JSONArray(jsonString);
    ArrayList<Test> testsLists = new ArrayList<Test>();
    for (int i = 0; i < arr.length(); i++) {
    JSONObject temp = (JSONObject) arr.get(i);
    Test tests = new Tests();
    tests.setmNewsTitle(temp.getString("id"));
    tests.setmNewsContent(temp.getString("hyname"));
    testsLists.add(news);
    }
    return testsLists;
    }
      

  5.   

    试一下这段代码:String jsontext=[{"id":"32","hyname":"Construction & Remodel"},...];ArrayList<String> list=new ArrayList<String>();Hashtable<String,String> hnameids=new Hashtable<String,String>();JsonArray array=new JsonArray(jsontext);for(int i=0;i<array.length;i++)
    {JsonObject obj=array.getJsonObject(i);list.add(obj.getString("hyname"));hnameids.put(obj.getString("hyname"),obj.getString("id"));}
    ArrayAdapter adapter=new ArrayAdapter(context,android.R.layout.simple_list_item1,list);
    spinner.setAdapter(adapter);
    spinner.OnItemSelectedListener (new OnItemClickListener() {    public void onItemClick(AdapterView<?> adapter, View view, int pos,
                long id) {        String data= spinner.getSelectedItem();
                  String id=hnameids.get(data);
        }});
      

  6.   

    另一种方法:
    使用 Collection 来设置 ID 和 HeName
    class YourCollection{
      private String id;
      private String hename;  void setHename(String hename){
      this.hename = hename;
      }  String getHename(){
       return hename;
       }  void setId(String id){
      this.id= id;
      }
       String getId(){
       return id;
       }}
    // AsyncTask
    @Override
        protected List<YourCollection> doInBackground(Void... params) {        JSONObject obj = null;
            List<YourCollection> result = new ArrayList<YourCollection>();        try{            InputStream ips = activity.getAssets().open("your.json");
                BufferedReader buffer = new BufferedReader(new InputStreamReader(ips));            StringBuilder string = new StringBuilder();
                String line = "";            while((line = buffer.readLine()) != null){
                    string.append(line);
                }            obj = new JSONObject(string.toString());        }
            catch(Exception e){        }            if(obj != null){
                    JSONArray array = obj.optJSONArray("data");       
                    for (int i=0; i<array.length(); i++){
                        JSONObject rss = array.optJSONObject(i);
                        YourCollection m = new YourCollection ();
                        m.setHename(rss.optString("hename")); m.setId(rss.optString("id")); 
                        result.add(m);
                    }
                }        return result;
        }
    在 Adapter 中创建一个函数来返回列表,使用:
    OnItemSelectedListener mwe = new OnItemSelectedListener() {        @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
    List<YourCollection> list = YourAdapter.getList(); // your function to get List
    YourCollection c = list.get(arg2);
    String id = c.getId();        }
           @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub        }
        };