void onCreate
new LocalGetJson().execute();
----------------------------------------------------------------------------------------------------
AsycTask
private class LocalGetJson extends AsyncTask<Void, Integer, String> {
ArrayList<String> localString = new ArrayList<>();
ArrayList<String> rCode01 = new ArrayList<>();
ArrayList<String> rCode02 = new ArrayList<>();
String jSonGet = null;
private String rCodeString01 = null;
private String rCodeString02 = null;
private String LocalName = null;
public String url = "URL 주소"
JsonParser json;
private ProgressDialog pDialog;
public LocalGetJson() {
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getApplicationContext());
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
json = new JsonParser();
if (url != null) {
jSonGet = json.getJSONFromUrl(url);
}
if (jSonGet != null) {
try {
JSONArray contacts = new JSONArray(jSonGet);
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
rCodeString01 = c.getString("Rcode01");
rCodeString02 = c.getString("Rcode02");
LocalName = c.getString("LocalName");
Log.d("LocalName", LocalName);
localString.add(LocalName);
rCode01.add(rCodeString01);
rCode02.add(rCodeString02);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return url;
}
@Override
protected void onPostExecute(String result) {
pDialog.cancel();
Spinner sp1 = (Spinner) findViewById(R.id.address_spinal_1);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, localString);
adapter1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp1.setAdapter(adapter1);
sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (rCode01.get(position).equals(rCodeString01)) {
Spinner sp2 = (Spinner) findViewById(R.id.address_spinal_2);
url = "URL 주소"+ rCodeString01;
doInBackground();
ArrayAdapter<String> adapter2;
adapter2 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, localString);
adapter2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
sp2.setAdapter(adapter2);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
--------------------------------------------------------------------------------------------------
json.getJSONFromUrl(url);
public class JsonParser {
HttpURLConnection urlConnection;
URL url;
// constructor
public JsonParser() {
}
public String getJSONFromUrl(String urls) {
// Making HTTP request
StringBuilder result = new StringBuilder();
try {
url = new URL(urls);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
}catch( Exception e) {
e.printStackTrace();
}
finally {
urlConnection.disconnect();
url= null;
}
return result.toString();
}
}
처음 URL 값은 들고오는데 두번째에 선택했을때 값은 안들어오네요ㅠㅠ...
하나의 액티비티에 URL 두번 가져올순 없는건가요 ?ㅠ
일단 두개의 URL은 같은 JSON 방식으로 되어있습니다.
디버깅 확인시 두번째 URL을 들고올때
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
에서 아예 JSON 값을 들고오지 않네요 ㅠㅠ 고수님들 해결방법좀 부탁드립니다..