Webサービスから解析されたデータを使用するスピナーが3つあります。1番目のスピナーからアイテムを選択すると、2番目のスピナーは解析された関連データを表示します。
しかし、1番目のスピナーでアイテムを再度選択すると、関連するデータが2番目のスピナーで解析されないため、更新されません。
この問題の解決を手伝ってもらえますか?前もって感謝します。
country_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
int item=country_spinner.getSelectedItemPosition();
if(item!=0)
{
String selected1=country_spinner.getItemAtPosition(position).toString();
System.out.println(selected1);
progressDialog=ProgressDialog.show(getParent(), "", "Loading...");
new StateTask().execute();
}
adapter1.notifyDataSetChanged();
}
@Override
public void onNothingSelected(
AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
2番目のスピナー
state_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
int item=state_spinner.getSelectedItemPosition();
// String sate=state_spinner.getSelectedItem().toString();
if(item!=0)
{
String selected=state_spinner.getItemAtPosition(position).toString();
System.out.println(selected);
city_spinner.setEnabled(false);
progressDialog=ProgressDialog.show(getParent(), "", "Loading...");
new CityTask().execute();
}
adapter2.notifyDataSetChanged();
}
@Override
public void onNothingSelected(
AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
StateTask
public class StateTask extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... arg0) {
//Creating JSON Parser instance//////////
JSONParser jParser=new JSONParser();
//Getting JSON String from URL..............
JSONObject jObject=jParser.getJSONFromUrl(URL);
try
{
jsonArray=jObject.getJSONArray(TAG_STATES);
//final String[] country_array_spinner = new String[jsonArray.length()];
for (int i=0; i<jsonArray.length(); i++)
{
//country_array_spinner[i]=jsonArray.getJSONObject(i).getString(TAG_STATE);
adapter1.add(jsonArray.getJSONObject(i).getString(TAG_STATE));
}
}
catch(JSONException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
state_spinner.setEnabled(true);
state_spinner.setAdapter(adapter1);
progressDialog.dismiss();
super.onPostExecute(result);
}
}
CityTask
public class CityTask extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... arg0) {
//Creating JSON Parser instance//////////
JSONParser jParser=new JSONParser();
//Getting JSON String from URL..............
JSONObject jObject=jParser.getJSONFromUrl(URLs);
try
{
String sate=state_spinner.getSelectedItem().toString();
jsonArray=jObject.getJSONArray(TAG_CITIES);
//final String[] country_array_spinner = new String[jsonArray.length()];
for (int i=0; i<jsonArray.length(); i++)
{
JSONObject e=jsonArray.getJSONObject(i);
String ab=e.getString(TAG_STATE);
Log.v(ab, "hgdsagds");
if(ab.contains(sate)){
adapter2.add(jsonArray.getJSONObject(i).getString(TAG_CITY));
}
//country_array_spinner[i]=jsonArray.getJSONObject(i).getString(TAG_STATE);
}
}
catch(JSONException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
city_spinner.setEnabled(true);
city_spinner.setAdapter(adapter2);
progressDialog.dismiss();
super.onPostExecute(result);
}
}