안녕하세여
풀파싱으로 데이터를 받아오는데요
A 클래스안에
onCreate() 안에 파싱을 써서 파싱하는B 클래스로 보냅니다.
그리고 END_TAG 에서 끝나는 시점에 핸들러로 A클래스에 받아옵니다.
A클래스의 ArrayList가 하나있는데
파싱해온 값을 저장하려 하는데
handler안에다가 로그를 찍어보면 size가 맞게 저장되어 있는데
onCreate안에 size를 찍어보면 안나오네요 ㅠㅠ
스레드가 끝나고 ArrayList값을 받아올 수 있는 방법은 뭐가 있을까요??;;
자꾸 0이 찍혀요 ㅠ
Handler안에서는 맞게 사이즈나오는데...
Handler안에 작업을 해도 에러가나고 ㅠ
제가 이해한게 맞는지요
A클래스의 OnCreate()에서
B클래스를 호출하고.. 이때 Handler를 넘겨주셔서
END_TAG 핸들러 호출시..
A에 넘겨줘서 ArrayList에 값을 추가 하시는 작업인가요?
------------------------------------------------
제가 몇가지 질문 하나 드릴게요
우선..
1. B클래스의 파싱하는 부분은 쓰레드로 되어 있나요?
=> 만약 그럴경우... A클래스의 OnCreate()에서 B클래스를 호출하고..
바로 ArrayList의 size를 호출하셨다면.. 사이즈가 안나올 가능성이 많습니다.
왜냐하면.. B클래스에서 값을 받아서 처리하는 동안에.. A의 OnCreate는 실행이 되거든요..
즉 ArrayList의 size를 구하는 루틴이 실행된다는 겁니다.
=> 해결방법..
Handler의 END_TAG 시점에서 처리해 주셔야됩니다...
핸들러말고 runOnUiThread를 사용해보세요
final ArrayLIst array=new AarayList();
new Thread(){
public void run(){
//파싱
array.add(...);
runOnUiThread(new Runnable(){
//UI변경작업
});
}
}.start();