繁体   English   中英

如何基于选定的微调器项获取关联的Json值

[英]how to get Associated Json value based on selected spinner item

我有两个URL,一个用于获取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中使用...我不知道该怎么做。任何帮助请....谢谢

首先,以这种方式解析您的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();
            }    

现在从“ companyNameList”填写您的列表:

 for (int i = 0; i < companyNameList.size(); i++) {    
      companyNameSpinnerList.add(companyNameList.get(i).get("companyName"));
    }
   companyNameAdapter.notifyDataSetChanged();

然后使用

字符串company_name_id = companyIdList.get(i).get(“ companyCode”);

在Ur内部,使用“ onItemSelected”方法。 “ company_name_id”将是您所需的所选公司名称的ID。

方法1-使用“ companyNameList”数组填充适配器。 单击任何项​​目后,获取其位置并使用“ companyIdList”获取其ID。

方法:2-您也可以为其使用POJO类...首先获取所选商品的位置(在您的情况下为“ i”),然后使用它从您的POJO获取公司ID

您可以为模型提供一个bean类。

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

    //getter-setter
}

然后通过传递Bean类的数组列表(即ArrayList<MyBean>为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) {

    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM