package com.example.jeonjuintroduce;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Vector;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class Activity_culture extends ListActivity{
static String dataTitle ="dataTitle" ;
static String dataContent ="dataContent";
static String tmpField4 ="tmpField4";
static int index = 0;
URL newURL;
String tagName ="";
HashMap<String, String> map;
ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>();
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.page1);
new ProgressTask(Activity_culture.this).execute();
ArrayAdapter<HashMap<String, String>> listAD = new ArrayAdapter<HashMap<String, String>>(Activity_culture.this, R.layout.page1, arraylist);
lv = (ListView)findViewById(android.R.id.list);
lv.setAdapter(listAD);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id)
{
// TODO Auto-generated method stub
Intent intent = new Intent(Activity_culture.this , Activity_detail.class);
startActivity(intent);
}
});
}
private class ProgressTask extends AsyncTask<String, Void, Boolean> {
private ProgressDialog dialog;
public ProgressTask(ListActivity activity) {
Log.i("1", "Called");
context = activity;
dialog = new ProgressDialog(context);
}
private Context context;
protected void onPreExecute() {
this.dialog.setMessage("잠시만 기다려주세요.");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
ListAdapter adapter = new SimpleAdapter(context, arraylist, R.layout.page2, new String[] {dataTitle, dataContent
,tmpField4}, new int[] { R.id.titletxt, R.id.menutxt1 , R.id.addresstxt1});
setListAdapter(adapter);
lv = getListView();
////////////밑줄 빨강색
lv.setDivider(new ColorDrawable(Color.RED));
lv.setDividerHeight(5);
}
protected Boolean doInBackground(final String... args) {
// TODO Auto-generated method stub
try{
//uri에 저장된 사이트에 접속
map = new HashMap<String, String>();
newURL = new URL(url);
//xml데이터를 읽어서 inputstream에 접속
InputStream in = newURL.openStream();
//xmlpullparser를 사용하기 위해
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//네임스페이스 사용여부
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(in , "UTF-8");
//이벤트 저장할 변수 선언
int eventType = xpp.getEventType();
boolean isItemTag = false;
//xml의 데이터의 끝까지 돌면서 원하는 데이터를 얻어옴
while(eventType != XmlPullParser.END_DOCUMENT)
{
if( eventType == XmlPullParser.START_TAG) //시작 태그를 만났을떄
{
//태그명 저장
tagName = xpp.getName();
if(tagName.equals("list"))
isItemTag = true;
}
else if(eventType == XmlPullParser.TEXT)//내용
{
//tagname에 저장된 태그명 title 태그일때 제목을 저장
if(isItemTag ==true && tagName.equals("dataTitle"))
{
map.put(dataTitle, xpp.getText());
Log.i("News App",dataTitle);
}
//기사의 내용을 저장
if(isItemTag ==true && tagName.equals("dataContent"))
map.put(dataContent,xpp.getText());
Log.e("News App","e =>"+dataContent);
if(isItemTag == true && tagName.equals("tmpField4"))
map.put(tmpField4, xpp.getText());
Log.e("News App","a =>"+tmpField4);
}
else if(eventType == XmlPullParser.END_TAG)//닫는 태그를 만났을때
{
tagName = xpp.getName();
if(tagName.equals("viewCount"))
{
arraylist.add(map);
}
}
eventType = xpp.next();
}
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
}
공공api를 통해서 가게리스트를 출력해주는거 만들고있는데요...
xmlpullparser 사용해서 title과 content 부분 그리고 tmpfield라는 주소부분 가져왔는데
출력해보면 가게 하나가 리스트에 여러개 찍히고 끝나네요..ㅠㅠ
이렇게 하면 될꺼같았는데 뭐가 문제인지 ..ㅠㅠ 많은 가르침 부탁드립니다..ㅠ