一组json数据,如何将这组据填充到Spinner组件中

wsxcy66668888 2013-01-30 05:18:58

[{"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的值呢?请指教
...全文
400 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
问答小助手 2013-02-22
  • 打赏
  • 举报
回复
另一种方法: 使用 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

        }
    };
问答小助手 2013-02-18
  • 打赏
  • 举报
回复
试一下这段代码:
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);
    }

});
tanhao_wenyu 2013-02-18
  • 打赏
  • 举报
回复
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; }
chjyao1 2013-02-17
  • 打赏
  • 举报
回复
处理方法 先下载JSON android 解析库 GSON 然后把JSON解析成数组
guxuemei1111 2013-02-16
  • 打赏
  • 举报
回复
先将数据解析好,保存为一个arraylist,然后自定义一个baseadapter或者直接ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.spinnerbg(一个textview就行), hyname的数组);然后spinner.setAdapter(adapter); 点击时取id的值,只要在spinner.setOnItemSelectedListener里面实现就可以了
wsxcy66668888 2013-01-30
  • 打赏
  • 举报
回复
顶一下,求教
wsxcy66668888 2013-01-30
  • 打赏
  • 举报
回复
新手,求段代码,谢谢
儿大不由爷 2013-01-30
  • 打赏
  • 举报
回复
先解析数据,放到list或者vector中,然后再显示

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧