xml 파싱을 하고 그 파싱한 값을 받아와 그 값들을 ArrayList<listmap> titlevec = new ArrayList<listmap>();에 붙이고 난 이후에 커스텀 리스트뷰를 통해 출력 하려고 하는데요
개발환경이 안드로이드 4.0인 관계로 xml파싱을 해주는 MainActivity가 AsyncTask를 extends 하고 있어서 밑에 start함수를 사용하여 값을 하나로 묶어 커스텀 리스트뷰를 사용 출력하려고 하는데요..
밑에와 같은 로그가 뜨면에 안드로이드 화면이 검게된 상태로 됩니다.
계속 고민하다가 올리게 되었는데 답해주시면 감사하겠습니다.
selectmap.java
package kr.hansung.bus_app;
import java.util.ArrayList;
import java.util.Vector;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class selectmap extends ListActivity implements OnItemClickListener {
ArrayList<listmap> titlevec = new ArrayList<listmap>();
MainActivity newscontent = new MainActivity();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.busmap);
ListView lv = (ListView) findViewById(android.R.id.list);
newscontent.seturl("01199");
newscontent.execute(null,null,null);
start();
while(true){
try {
Thread.sleep(1000);
if(newscontent.flag == true){
titlevec = newscontent.contacts2;
break; }
} catch (Exception e) { }
}
customadp adapter = new customadp(this,
android.R.layout.simple_expandable_list_item_1,
titlevec);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
}
public void start(){
for(int i=0;i<newscontent.rtNm.size();i++){
newscontent.contacts2.add(new listmap(newscontent.rtNm.get(i),newscontent.staOrd.get(i),newscontent.stid1.get(i),newscontent.traTime1.get(i),newscontent.traTime2.get(i)));
}
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
}
}
-------------------------------Mainactivity.java
package kr.hansung.bus_app;
import java.net.URL;
import java.util.ArrayList;
import java.util.Vector;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends AsyncTask<Void, Void, Void> {
String max1;
String max2;
String max3;
String max4;
String max5;
ArrayList<String> stid1;
ArrayList<String> rtNm;
ArrayList<String> staOrd;
ArrayList<String> traTime1;
ArrayList<String> traTime2;
ArrayList<listmap> contacts2;
String ext = "http://ws.bus.go.kr/api/rest/stationinfo/getStationByUid?ServiceKey=eBhJk6Zx39J/XqJMY2RqoK0Bq44pza4uFjZoj25dbRmswGxI5f3JCRdGT6hC4gfgAQvVwAqkNge65H59iyAgkg==&arsId=";
boolean flag = false;
public void seturl(String s1) {
ext = ext + s1;
}
@SuppressWarnings("unused")
protected Void doInBackground(Void... params) {
stid1 = new ArrayList<String>();
rtNm = new ArrayList<String>();
staOrd = new ArrayList<String>();
traTime1 = new ArrayList<String>();
traTime2 = new ArrayList<String>();
contacts2 = new ArrayList<listmap>();
try {
URL text = new URL(ext);
XmlPullParserFactory parserCreator = XmlPullParserFactory
.newInstance();
parserCreator.setNamespaceAware(true);
XmlPullParser parser = parserCreator.newPullParser();
parser.setInput(text.openStream(), null);
int parserEvent = parser.getEventType();
String tag;
boolean inTitle = false, inTitle2 = false, inTitle3 = false, inTitle4 = false, inTitle5 = false;
if (text == null);
else {
while (parserEvent != XmlPullParser.END_DOCUMENT) {
switch (parserEvent) {
case XmlPullParser.TEXT:
tag = parser.getName();
if (inTitle) {
max1 = parser.getText();
stid1.add(max1);
} else if (inTitle2) {
max2 = parser.getText();
rtNm.add(max2);
} else if (inTitle3) {
max3 = parser.getText();
staOrd.add(max3);
} else if (inTitle4) {
max4 = parser.getText();
traTime1.add(max4);
} else if (inTitle5) {
max5 = parser.getText();
traTime2.add(max5);
}
break;
case XmlPullParser.END_TAG:
tag = parser.getName();
if (tag.compareTo("stid") == 0) {
inTitle = false;
} else if (tag.compareTo("rtNm") == 0) {
inTitle2 = false;
} else if (tag.compareTo("staOrd") == 0) {
inTitle3 = false;
} else if (tag.compareTo("traTime1") == 0) {
inTitle4 = false;
} else if (tag.compareTo("traTime2") == 0) {
inTitle5 = false;
}
break;
case XmlPullParser.START_TAG:
tag = parser.getName();
if (tag.compareTo("stid") == 0) {
inTitle = true;
} else if (tag.compareTo("rtNm") == 0) {
inTitle2 = true;
} else if (tag.compareTo("staOrd") == 0) {
inTitle3 = true;
} else if (tag.compareTo("traTime1") == 0) {
inTitle4 = true;
} else if (tag.compareTo("traTime2") == 0) {
inTitle5 = true;
}
break;
}
parserEvent = parser.next();
}
}
flag = true;
} catch (Exception e) {
Log.e("dd", "Error network", e);
}
return null;
}
}
12-15 20:10:18.752: E/AndroidRuntime(10320): FATAL EXCEPTION: main
12-15 20:10:18.752: E/AndroidRuntime(10320): java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.hansung.bus_app/kr.hansung.bus_app.selectmap}: java.lang.NullPointerException