如何根据选定的微调器项获取关联的Json值

时间:2017-06-15 06:51:54

标签: android json android-spinner

我有两个网址,一个用于获取regionname,另一个用于登录。第一个网址给出了响应

[{"CmpnyName":"Indore","CmpnyCode":"111"},{"CmpnyName":" Nagpur","CmpnyCode":"222"},{"CmpnyName":" Jabalpur","CmpnyCode":"333"},{"CmpnyName":"Amravati","CmpnyCode":"444"}]

现在我必须在微调器中显示CmpnyName。所以我做了,

typeofcompany.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            ba = typeofcompany.getSelectedItem().toString();
            SelectType(ba);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

我的问题是,当我选择CmpnyName时,它应该调用其关联的CmpnyCode,例如indore应该调用111等等....这将在第二个url中使用...我没有得到怎么做它...请帮助....谢谢你

2 个答案:

答案 0 :(得分:0)

首先,以这种方式解析你的Gson字符串:

 ArrayList<HashMap<String,String>>  companyNameList = new ArrayList<>()
    ArrayList<HashMap<String,String>> companyIdList= new ArrayList<>();

try 
{
    JSONArray array = new JSONArray(preferenceManager.getSalaryJobFilter());

                for(int arr = 0; arr<array.length(); arr++){
                  HashMap<String,String>  hashMap = new HashMap<>();
                   HashMap<String,String>  hashMap1 = new HashMap<>();

                    JSONObject object = array.getJSONObject(arr);

                      hashMap.put("companyName",object.getString("companyName"));

             hashMap1.put("companyCode",object.getString("companyCode"));

                    companyNameList .add(hashMap);
                    companyIdList.add(hashMap1);
                }

 } 

 catch (JSONException e) {
                e.printStackTrace();
            }    

现在从&#34; companyNameList&#34;:

填写您的列表
 for (int i = 0; i < companyNameList.size(); i++) {    
      companyNameSpinnerList.add(companyNameList.get(i).get("companyName"));
    }
   companyNameAdapter.notifyDataSetChanged();

然后使用

  
    

String company_name_id = companyIdList.get(i).get(&#34; companyCode&#34;);

  

Inside Ur&#34; onItemSelected&#34;方法。 &#34; company_name_id&#34;将是您需要的所选公司名称的ID。

方法1-使用&#34; companyNameList&#34;数组来填充适配器。点击任何项目后,获取其位置并使用&#34; companyIdList&#34;获得它的身份。

方法:2-您也可以使用POJO类...首先获取所选项目位置(在您的情况下为&#34; i&#34;)并使用它来从您的POJO获取companyid

答案 1 :(得分:0)

您可以为您的模型设置bean课程。

class MyBean implements java.io.Serializable{
    String companyName;
    String companyCode;

    //getter-setter
}

然后通过传递bean类的数组列表(即ArrayList<MyBean>

)为Spinner设置自定义适配器

然后在spinner的onItemSelectedListener中执行类似的操作,

typeofcompany.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        MyBean clickedCompany = myBeanList.get(i);
        // then you can get clickedCompany.getCompanyName();
        // clickedCompany.getCompanyCode();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
});