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

공공 api xml 파싱후 리스트뷰로 출력하려고 합니다.

0 추천

이번에 처음 안드로이드를 공부하면서 공공api를 이용해서 파싱해 오는 부분을 하고 있는데 파싱까지는 됬는데 이제 이걸 리스트뷰로 뿌려줄려고 하는데 아무래도 파싱쪽을 제대로 안해서 그런지 이걸 어떻게 해야지 리스트뷰로 출력되는지 감이 잘 안와서 이곳에 질문 올리게 되었습니다... 기초가 많이 부족하다보니 응용해서 바꿀려고하니 잘되지도 않고...저는 화면에 바로 출력해보고 싶은데.. 구글링해서 나온 것은 검색기능을 추가해서 출력 하는거라.. 응용이 생각만큼 잘되지 않습니다.. 책보다가 답답한 마음에 이곳에 글을 올리게 되었는데 혹시 알려주실수있을까요..?   

밑에는 제가 사용한 xml 파싱 소스인데  리스트 뷰로 바로 출력 하려면 어떻게 해야지 가능할까요?

public class MainActivity extends AppCompatActivity {
    TextView tv;

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

        tv = (TextView) findViewById(R.id.data);

        String serviceUrl = "주소";
        String serviceKey = "인증키";
        String strSrch = "item";
        String strUrl = serviceUrl+"?ServiceKey="+serviceKey+"&strSrch="+strSrch;

        new DownloadWebpageTask().execute(strUrl);
    }

    private class DownloadWebpageTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {
            try {
                return (String)downloadUrl((String)urls[0]);
            } catch (IOException e) {
                return "다운로드실패";
            }
        }
        protected void onPostExecute(String result) {

            try {
                XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                factory.setNamespaceAware(true);
                XmlPullParser xpp = factory.newPullParser();

                xpp.setInput(new StringReader(result));
                int eventType = xpp.getEventType();
                boolean bSet = false;
                while (eventType != XmlPullParser.END_DOCUMENT) {

                    if(eventType == XmlPullParser.START_DOCUMENT) {
                        ;
                    } else if(eventType == XmlPullParser.START_TAG) {
                        String tag_name = xpp.getName();
                        if (tag_name.equals("title") || tag_name.equals("tel"))
                            bSet = true;
                    } else if(eventType == XmlPullParser.TEXT) {
                        if (bSet) {
                            String content = xpp.getText();
                            tv.append(content + "\n");
                            bSet = false;
                        }
                    } else if(eventType == XmlPullParser.END_TAG) {
                        ;
                    }
                    eventType = xpp.next();
                }
            } catch (Exception e) {
                tv.setText(e.getMessage());
            }
        }

        private String downloadUrl(String myurl) throws IOException {

            HttpURLConnection conn = null;
            try {
                URL url = new URL(myurl);
                conn = (HttpURLConnection) url.openConnection();
                BufferedInputStream buf = new BufferedInputStream(conn.getInputStream());
                BufferedReader bufreader = new BufferedReader(new InputStreamReader(buf, "utf-8"));
                String line = null;
                String page = "";
                while((line = bufreader.readLine()) != null) {
                    page += line;
                }

                return page;
            } finally {
                conn.disconnect();
            }
        }
    }
}
----xml----
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ListView
    android:id="@+id/listview"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:divider="#ffcc22"
    android:dividerHeight="1.5dp"
    android:choiceMode="singleChoice"
    />
</LinearLayout>
마시멜로우 (120 포인트) 님이 2016년 5월 31일 질문
마시멜로우님이 2016년 5월 31일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...