Android 当我选择一个国家时,我想要id?

Android 当我选择一个国家时,我想要id?,android,android-layout,android-activity,android-spinner,Android,Android Layout,Android Activity,Android Spinner,我从这个响应中获得了我的微调器中的id和名称,现在我尝试的是,如果用户从微调器中选择India,那么我想获得id值,但我没有得到,下面是我的响应和代码,有人能告诉我问题出在哪里吗 回应 {"search values": [ {"id":"1","name":"India"}, {"id":"2","name":"srilanka"} ], "success":1 } 例如,我在选择india,我希望结果id==1 当我传递id

我从这个响应中获得了我的微调器中的id和名称,现在我尝试的是,如果用户从微调器中选择India,那么我想获得id值,但我没有得到,下面是我的响应和代码,有人能告诉我问题出在哪里吗

  • 回应

    {"search values":
    [
        {"id":"1","name":"India"},      
        {"id":"2","name":"srilanka"}
            ],
            "success":1 
    }
    
  • 例如,我在选择india,我希望结果id==1

  • 当我传递id时,我得到的是状态列表响应

    {"searchvalues":[{"id":"1","name":"Tamilnadu"},{"id":"1","name":"Kerala"}],"success":1}
    
    • 我的代码是:

      country.setOnItemSelectedListener(new OnItemSelectedListener() {
      
      @Override
      public void onItemSelected(AdapterView<?> parent,
          View view, int position, long id) {
      // TODO Auto-generated method stub
      String  countryname = country.getSelectedItem().toString();
      StringRequest state=new StringRequest(Request.Method.POST, D_URL, new Response.Listener<String>() {
      
          @Override
          public void onResponse(String response) {
      
              try {
                  JSONObject jsnobject = new JSONObject(response);
            JSONArray  jsonArray             =jsnobject.getJSONArray("searchvalues");
      
              distadapter.clear();
               for (int i = 0; i < jsonArray.length(); i++) {
      
                   JSONObject obj= jsonArray.getJSONObject(i);
      
               }
      
              } catch (JSONException e) {
                  e.printStackTrace();
              }
      
          }
      }, new Response.ErrorListener() {
      
          @Override
          public void onErrorResponse(VolleyError arg0) {
              // TODO Auto-generated method stub
      
          }
      });
      
      country.setOnItemSelectedListener(新的OnItemSelectedListener(){
      @凌驾
      已选择公共无效项(AdapterView父项,
      视图、整型位置、长id){
      //TODO自动生成的方法存根
      字符串countryname=country.getSelectedItem().toString();
      StringRequest状态=新建StringRequest(Request.Method.POST、D_URL、new Response.Listener()){
      @凌驾
      公共void onResponse(字符串响应){
      试一试{
      JSONObject jsnobject=新的JSONObject(响应);
      JSONArray JSONArray=jsnobject.getJSONArray(“searchvalues”);
      distadapter.clear();
      for(int i=0;i

    为此,您必须创建Getter Setter类来获取第一个JsonObject的Id和名称

    下面是Getter Setter的代码

    public class SearchValues {
    
    String id, name;
    
    public SearchValues(String id, String name) {
        // TODO Auto-generated constructor stub
    
        this.id = id;
        this.name = name;
    }
    
    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    
    /**
     * @param id
     *            the id to set
     */
    public void setId(String id) {
        this.id = id;
    }
    
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    
    /**
     * @return the id
     */
    public String getId() {
        return id;
    }}
    
    在mainActivity中创建一个列表,如下所示

    List<SearchValues> values;
    
    获取这些值后,在微调器中添加代码

    spin_numberPages
                .setOnItemSelectedListener(new OnItemSelectedListener() {
    
                    @Override
                    public void onItemSelected(AdapterView<?> parent,
                            View view, int position, long id) {
                        // TODO Auto-generated method stub
                           String id = values.get(position).getId();
                          // here you get ID and now you may do what you want to do with ID.
    
                    }
    
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
                        // TODO Auto-generated method stub
    
                    }
                });
    
    spin\u数页
    .setOnItemSelectedListener(新的OnItemSelectedListener(){
    @凌驾
    已选择公共无效项(AdapterView父项,
    视图、整型位置、长id){
    //TODO自动生成的方法存根
    String id=values.get(position.getId();
    //在这里你可以得到ID,现在你可以用ID做你想做的事情。
    }
    @凌驾
    未选择公共无效(AdapterView父级){
    //TODO自动生成的方法存根
    }
    });
    

    希望这将对您有所帮助。

    您可以做一件事,创建微调器的自定义视图,并在微调器项中创建id的隐藏字段,当您选择微调器项时,从所选微调器项中获取id

    在类中创建两个ArrayList,一个用于名称,另一个用于<代码>id

    ArrayList data_json = new ArrayList<SearchValues>();
    ArrayList country_name = new ArrayList<String>();   for name
    ArrayList country_id = new ArrayList<String>();     for id
    
    并在您的
    OnItemSelectedListener

    ArrayAdapter adapter =
            new ArrayAdapter(getApplication(), R.layout.list_item, R.id.text1,country_name);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
        public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
          String cut_code = country_id.get(position);
          String selectedItem = arg0.getItemAtPosition(position).toString();
    
        }
    
        public void onNothingSelected(AdapterView<?> arg0) {
        }
      });
     }
    
    ArrayAdapter适配器=
    新的ArrayAdapter(getApplication(),R.layout.list_项,R.id.text1,国家/地区名称);
    旋转器。设置适配器(适配器);
    spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
    已选择公共位置(AdapterView arg0、视图、整型位置、长id){
    字符串切割代码=国家/地区id.get(位置);
    字符串selectedItem=arg0.getItemAtPosition(位置).toString();
    }
    未选择公共无效(AdapterView arg0){
    }
    });
    }
    

    可能有助于您在此处传递所选国家/地区以检查json对象如果该对象包含该城市,则该对象应包含与该城市关联的id。因此从中获取id

    id=0

    for(int i=0;i
    您可以添加微调器的屏幕截图吗?微调器是否包含响应中的id和名称,或者您提到的是礼来?尝试此演示:您需要将您的json保存在arraylist中,然后在onitemselected中,您可以按位置获取id..很简单
    ArrayList data_json = new ArrayList<SearchValues>();
    ArrayList country_name = new ArrayList<String>();   for name
    ArrayList country_id = new ArrayList<String>();     for id
    
       try {
             jsonarray = jsonobject.getJSONArray("searchvalues");
             for (int i = 0; i < jsonarray.length(); i++) {
             jsonobject = jsonarray.getJSONObject(i);
             data_json value = new data_json();
             value.setName(jsonobject.optString("name"));
             value.setId(jsonobject.optString("ID"));
             data_json.add(value);
             country_name.add(jsonobject.optString("name"));
             country_id.add(jsonobject.getString("ID"));
                }
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }
    
    ArrayAdapter adapter =
            new ArrayAdapter(getApplication(), R.layout.list_item, R.id.text1,country_name);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
        public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
          String cut_code = country_id.get(position);
          String selectedItem = arg0.getItemAtPosition(position).toString();
    
        }
    
        public void onNothingSelected(AdapterView<?> arg0) {
        }
      });
     }
    
    for (int i = 0; i < jsonArray.length(); i++) {
    
                 JSONObject obj= jsonArray.getJSONObject(i);
    
    
                if(obj.getString("contry").equals(selected_country))
    {
                     id=obj.getInt("id");
    break;
    
             }