2016-07-06 18 views
0

2つのAPIと2つのスピナーがあります.1つは州のリスト用、もう1つは都市のリスト用です。都市リストのJSONArrayがnullの場合もあります。だから私はボレーのJSONの解析でそのヌルがスピナーにデフォルトのメッセージを設定しているかどうかチェックしたいと思います。しかし、デフォルトのメッセージが表示されません。その代わりに、デフォルトで設定されている州の都市リストを示す。これにはどんな解決策がありますか? JSON配列の状態をチェックするためのコードの下jsonarrayがnullの場合、スピナーを空白に設定します。

// null city list 
 

 
{ 
 
    "citylist": [] 
 
}
// JSON for state list 
 

 
{ 
 
    "statelist": [ 
 
    { 
 
     "state_id": "1", 
 
     "state_name": "West bengal" 
 
    }, 
 
    { 
 
     "state_id": "3", 
 
     "state_name": "Himachal Pradesh" 
 
    }, 
 
    { 
 
     "state_id": "4", 
 
     "state_name": "Maharashtra" 
 
    }, 
 
    { 
 
     "state_id": "11", 
 
     "state_name": "Queensland" 
 
    } 
 
    ] 
 
}
public class MainActivity extends AppCompatActivity { 
 

 
    private static final String STATE = "http://example.com/ubooktoday/android/showstatebycountry"; 
 
    private static final String CITY = "http://example.com/ubooktoday/android/showcitybystate"; 
 
    Spinner spin1, spin2; 
 
    String stateid, cityid, zipid; 
 
    ArrayList<String> namelist, idlist; 
 
    ArrayAdapter<String> adapter; 
 
    HashMap<String,String> spinnerMap1, spinnerMap2; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     spin1=(Spinner)findViewById(R.id.spin1); 
 
     spin2=(Spinner)findViewById(R.id.spin2); 
 

 
     namelist = new ArrayList<String>(); 
 
     idlist = new ArrayList<String>(); 
 

 
     loadstate(); 
 

 
     spin1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
 
      @Override 
 
      public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
 
       String statename = spin1.getSelectedItem().toString(); 
 
       stateid = spinnerMap1.get(statename); 
 
       //Toast.makeText(getApplicationContext(), stateid, Toast.LENGTH_SHORT).show(); 
 
       loadcity(); 
 
      } 
 

 
      @Override 
 
      public void onNothingSelected(AdapterView<?> adapterView) { 
 

 
      } 
 
     }); 
 

 
     spin2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
 
      @Override 
 
      public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
 
       String cityname = spin2.getSelectedItem().toString(); 
 
       cityid = spinnerMap2.get(cityname); 
 
       Toast.makeText(getApplicationContext(), cityid, Toast.LENGTH_SHORT).show(); 
 
      } 
 

 
      @Override 
 
      public void onNothingSelected(AdapterView<?> adapterView) { 
 

 
      } 
 
     }); 
 

 

 

 
    } 
 

 

 

 
    private void loadstate() { 
 

 
     if(namelist!=null)namelist.clear(); 
 
     if(idlist!=null)idlist.clear(); 
 

 

 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, STATE, 
 
       new Response.Listener<String>() { 
 
        @Override 
 
        public void onResponse(String response) { 
 

 
         try { 
 

 
          JSONObject jObj = new JSONObject(response); 
 

 
          JSONArray jsonArray = jObj.getJSONArray("statelist"); 
 
          for(int i=0; i<jsonArray.length(); i++){ 
 
           JSONObject obj = jsonArray.getJSONObject(i); 
 

 

 
           namelist.add(obj.getString("state_name")); 
 
           idlist.add(obj.getString("state_id")); 
 

 
           String[] spinnerArray = new String[idlist.size()]; 
 
           spinnerMap1 = new HashMap<String, String>(); 
 
           for (int j = 0; j < idlist.size(); j++) 
 
           { 
 
            spinnerMap1.put(namelist.get(j),idlist.get(j)); 
 
            spinnerArray[j] = namelist.get(j); 
 
           } 
 

 
           adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_item, spinnerArray); 
 

 
           spin1.setAdapter(adapter); 
 
          } 
 

 
         } catch (JSONException e) { 
 
          e.printStackTrace(); 
 
         } 
 

 

 
        } 
 
       }, new Response.ErrorListener() { 
 
      @Override 
 
      public void onErrorResponse(VolleyError error) { 
 
       Toast.makeText(getApplicationContext(), "VolleyError" + error.toString(), Toast.LENGTH_LONG).show(); 
 
      } 
 
     }) { 
 
      @Override 
 
      protected Map<String, String> getParams() { 
 
       Map<String, String> params = new HashMap<String, String>(); 
 
       params.put("country_id", "2"); 
 
       return params; 
 
      } 
 

 
     }; 
 

 
     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
 
     requestQueue.add(stringRequest); 
 
    } 
 

 
    private void loadcity() { 
 

 
     if(namelist!=null)namelist.clear(); 
 
     if(idlist!=null)idlist.clear(); 
 

 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, CITY, 
 
       new Response.Listener<String>() { 
 
        @Override 
 
        public void onResponse(String response) { 
 

 
         try { 
 
          JSONObject jObj = new JSONObject(response); 
 

 
          JSONArray jsonArray = jObj.getJSONArray("citylist"); 
 

 
          if(jsonArray.equals("null")){ 
 
           namelist.add("No Items"); 
 

 
           adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_item, namelist); 
 
           spin2.setAdapter(adapter); 
 
          }else{ 
 

 
           for(int i=0; i<jsonArray.length(); i++){ 
 

 
            JSONObject obj = jsonArray.getJSONObject(i); 
 

 

 
            namelist.add(obj.getString("city_name")); 
 
            idlist.add(obj.getString("city_id")); 
 

 
            String[] spinnerArray = new String[idlist.size()]; 
 
            spinnerMap2 = new HashMap<String, String>(); 
 
            for (int j = 0; j < idlist.size(); j++) 
 
            { 
 
             spinnerMap2.put(namelist.get(j),idlist.get(j)); 
 
             spinnerArray[j] = namelist.get(j); 
 
            } 
 

 
            adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_item, spinnerArray); 
 
            spin2.setAdapter(adapter); 
 
           } 
 

 
          } 
 

 

 

 

 

 
         } catch (JSONException e) { 
 
          // JSON error 
 
          e.printStackTrace(); 
 
          Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
 
         } 
 

 
        } 
 
       }, new Response.ErrorListener() { 
 
      @Override 
 
      public void onErrorResponse(VolleyError error) { 
 
       Toast.makeText(getApplicationContext(), "VolleyError" + error.toString(), Toast.LENGTH_LONG).show(); 
 
      } 
 
     }) { 
 
      @Override 
 
      protected Map<String, String> getParams() { 
 
       Map<String, String> params = new HashMap<String, String>(); 
 
       params.put("state_id", stateid); 
 
       return params; 
 
      } 
 

 
     }; 
 

 
     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
 
     requestQueue.add(stringRequest); 
 
    } 
 

 

 
}

答えて

0

使用、そんなに

if(jsonArray == null || jsonArray.equals("null") || jsonArray.length <= 0) 
    { 
     namelist.add("No Items"); 

     adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_item, namelist); 
     spin2.setAdapter(adapter); 
    } 
+0

感謝。今働いている。 – CodeAssasins

+0

コーディングをお楽しみください.... – Vickyexpert

+0

こんにちは。もう一つの問題があります。上記のコードを使って第1のスピナーが 'No Items'に設定されている場合、第2のスピナーの値を' No Items'とする方法は? @Vickyexpert – CodeAssasins

関連する問題