일단 안드로이드공부중입니다..
웹이랑 연동해서
</person>
이런 xml 데이터 인데요 이걸 listView로 뿌려 주고 싶습니다.
게시판 형식의 어플을 만들고 싶어서요..
빨간줄 색 소스를 추가하기 전까지 .. 그러니까 리스트에 값이 들어간것까지 확인했는데요..
빨간색 소스를 추가하니 안되더라고요...
저기를 어떻게 고치면 될까요??
도저히 물어볼 사람도 없고... 답답하네요..
아시는분좀 가르쳐 주세요~~~
수고하세요.. 혹 좀더 구체적인 설명이 필요하시다면 답글 남겨주세요..
아.. 에러 메세지 입니다..
*******************************************
09-13 01:47:06.091: ERROR/AndroidRuntime(2147): Uncaught handler: thread main exiting due to uncaught exception
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.exam/android.exam.Android_ListView}: java.lang.NullPointerException: println needs a message
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.os.Handler.dispatchMessage(Handler.java:99)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.os.Looper.loop(Looper.java:123)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.ActivityThread.main(ActivityThread.java:4363)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at java.lang.reflect.Method.invokeNative(Native Method)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at java.lang.reflect.Method.invoke(Method.java:521)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at dalvik.system.NativeStart.main(Native Method)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): Caused by: java.lang.NullPointerException: println needs a message
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.util.Log.println(Native Method)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.util.Log.v(Log.java:94)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.exam.Android_ListView.onCreate(Android_ListView.java:50)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-13 01:47:06.130: ERROR/AndroidRuntime(2147): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
*******************************************
package android.exam;
import java.net.*;
import java.util.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import android.app.*;
import android.os.*;
import android.util.*;
import android.widget.*;
public class Android_ListView extends Activity {
private static final String conLog = "cLog";
private ListView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try
{
URL url = new URL(""); //xml파일
SAXParserFactory parserModel = SAXParserFactory.newInstance();
SAXParser concreteParser = parserModel.newSAXParser();
XMLReader myReader = concreteParser.getXMLReader();
MySampleHandler mySample = new MySampleHandler(this);
myReader.setContentHandler(mySample);
myReader.setErrorHandler(mySample);
myReader.parse(new InputSource(url.openStream()));
Log.v("parse== ", "parseSuccess");
}catch(Exception e)
{
Log.v("Error=== ", e.getMessage());
}
setContentView(R.layout.main);
}
public void updateTextView(String text, String s_size, boolean size_flag)
{
ArrayList list = new ArrayList();
String[] split_text = text.split(",");
if(size_flag){
String fflag = Boolean.toString(size_flag);
Log.v("size_flag== ", fflag);
if(s_size.length() != 0){
for(int i = 0; i < Integer.parseInt(s_size);i++){
list.add(split_text[i].toString());
}
}
}
//============================ 여기서 부터 문제의 소스
ArrayAdapter adapter;
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
ListView list2 = (ListView)findViewById(R.id.list);
list2.setAdapter(adapter);
//============================ 여기까지 입니다.
}
}
class MySampleHandler extends DefaultHandler
{
private StringBuffer names = new StringBuffer();
private StringBuffer comps = new StringBuffer();
private StringBuffer departs = new StringBuffer();
private StringBuffer s_size = new StringBuffer();
private boolean hasName = false;
private boolean hasCompany = false;
private boolean hasDepart = false;
private boolean hasS_size = false;
private Android_ListView xp;
public MySampleHandler(Android_ListView xp)
{
this.xp = xp;
}
public void startElement(String uri, String localName, String qName, Attributes atts)
{
Log.v("conLog000", localName);
if(localName.equals("name"))
{
hasName = true;
}
else if(localName.equals("company"))
{
hasCompany = true;
}
else if(localName.equals("department"))
{
hasDepart = true;
}
else if(localName.equals("s_size")){
hasS_size = true;
}
}
public void endElement(String uri, String localName, String qName)
{
if(localName.equals("person"))
{
boolean size_flag = false;
if(s_size != null){
size_flag = true;
}
xp.updateTextView(names.toString(), s_size.toString(), size_flag);
}
}
public void characters(char[] chars, int start, int leng)
{
if(hasName)
{
hasName = false;
names.append(chars, start, leng);
}
else if(hasCompany)
{
hasCompany = false;
comps.append(chars, start, leng);
}
else if(hasDepart)
{
hasDepart = false;
departs.append(chars, start, leng);
}
else if(hasS_size){
hasS_size = false;
s_size.append(chars, start, leng);
}
}
android.R.layout.simple_list_item_1는 나의 R.id 에서 list를 찾는게 아니라 안드로이드의 android.R.id 에서 list를 찾아야 할거 같습니다.
android.R.id.list