Ich bekomme Daten von der JSON. Ich habe den Namen des Landes entsprechend alphabetisch sortiert. Aber wenn ich auf das Spinner-Item klicke, bekomme ich die Worg-ID des Items. Kann mir jemand sagen, wie ich die ID des sortierten Items vom Spinner bekommen kann.Wie bekomme ich die ID des sortierten Artikels des Spinner?
Das ist mein json: -
{
"Status": 1,
"StatusMessage": "Country and Country Area List",
"data": [
{
"CountryID": "1",
"CountryName": "India",
"CountryArea": [
{
"CountryID": "1",
"AreaID": "1",
"AreaName": "Kuwait City(Capital)"
},
{
"CountryID": "1",
"AreaID": "2",
"AreaName": " Hawally"
},
]
},
{
"CountryID": "2",
"CountryName": "Dubai",
"CountryArea": [
{
"CountryID": "2",
"AreaID": "6",
"AreaName": " Jeddah"
},
{
"CountryID": "2",
"AreaID": "7",
"AreaName": " Riyadh"
Dies ist die Methode, mit der ich Daten aus dem json bekommen bin: -
public void requestDataCountry() {
mProgressDialog.show();
StringRequest countrylistrequest = new StringRequest(Request.Method.GET, GlobalData.COUNTRYLISTURL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
mProgressDialog.dismiss();
final JSONObject jObject = new JSONObject(response);
if (jObject.getString("Status").equals("1")) {
JSONArray jsonArray = jObject.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
mCountryName = jsonObject.getString("CountryName");
mId = jsonObject.getString("CountryID");
mCountryList.add(mCountryName);
Collections.sort(mCountryList);
getCountryId.add(mId);
JSONArray jsonArray1 = jsonObject.getJSONArray("CountryArea");
for (int j = 0; j < jsonArray1.length(); j++) {
JSONObject jsonObject1 = jsonArray1.getJSONObject(j);
String countryAreaId = jsonObject1.getString("CountryID");
mAreaName = jsonObject1.getString("AreaName");
mAreaList.add(mAreaName);
}
}
countryAdapter.notifyDataSetChanged();
} else {
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}) {
};
RequestQueue countryqueue = Volley.newRequestQueue(getContext());
countryqueue.add(countrylistrequest);
}
Das ist mein Spinner-Code: -
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
super.onCreateOptionsMenu(menu, inflater);
this.menu = menu;
MenuItem menuItem = menu.findItem(R.id.menu_spinner).setVisible(true);
mCountrySpinner = (Spinner) MenuItemCompat.getActionView(menuItem);
countryAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, mCountryList);
countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mCountrySpinner.setAdapter(countryAdapter);
mCountrySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mCountrySerachId = getCountryId.get(position);
mEditor.putString(KEY_COUNTRY_ID, mCountrySerachId);
mEditor.commit();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
Mein Problem ist, wenn ich auf den Spinner Artikel klicke, wie ich klicke auf Dubai (CountryName) nach meinem JSON dann bekomme ich die ID 1 (Coun tryID) .Wenn ich auf Dubai (CountryName) klicke, sollte es die ID 2 (CountryID) bekommen. Ich kannte das Problem, ich sortierte den CountryName, aber ich sortierte die CountryID nicht. Meine Frage ist, wie kann ich die CountryID nach dem CountryName sortieren.
@ Febi Mathew Sehr geehrter Herr, Ihre Methode ist absolut richtig. aber ich möchte die Liste alphabetisch sortieren. Ihre Methode gibt mir die gleiche ID, aber sie sortiert den Namen des Landes nicht alphabetisch. also sag mir bitte, wie ich den landnamen alphabetisch sortieren kann und danach die gleiche land id gibt. – LoveAndroid