마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 파싱문제 해결좀 부탁드릴게요ㅠ

0 추천
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 값을 들고오지 않네요 ㅠㅠ 고수님들 해결방법좀 부탁드립니다..
New개발자 (510 포인트) 님이 2015년 9월 13일 질문

1개의 답변

0 추천
각기 다른 AsyncTask 로 진행해보세요.
개발자초심 (21,220 포인트) 님이 2015년 9월 14일 답변
...