Android 当我选择一个国家时,我想要id?
我从这个响应中获得了我的微调器中的id和名称,现在我尝试的是,如果用户从微调器中选择India,那么我想获得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
{"search values":
[
{"id":"1","name":"India"},
{"id":"2","name":"srilanka"}
],
"success":1
}
{"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
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;
}