안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드 초보입니다.
이것을 스레드를 이용하여서 만들려고 하거든요
public class List extends Activity {
private static String log = "List";
CustomAdapter2 mAdapter;
ListView mListView;
LayoutInflater mInflater;
ArrayList<ListXmlData> listXmlDataArr;
ParsingThread pt = new ParsingThread();
XmlDataView xmlDataView;
boolean mLockListView;
String mLastSeq = "";
String TotalSeq;
int mCount = 0;
View v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d(log, "onCreate 시작");
pt.setDaemon(true);
pt.start();
Log.d(log, "pt 스레드 시작");
mLockListView = true;
Log.d(log, "onCreate 끝");
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
mAdapter = new CustomAdapter2(List.this, R.layout.row, listXmlDataArr);
mListView = (ListView)findViewById(R.id.listView);
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = mInflater.inflate(R.layout.footer, null);
mListView.addFooterView(v);
mListView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
int count = totalItemCount - visibleItemCount;
if(firstVisibleItem >= count && totalItemCount != 0 && mLockListView == false)
{
}
}
});
mListView.setAdapter(mAdapter);
}
}
};
class ParsingThread extends Thread {
@Override
public void run() {
mLockListView = true;
ListParser lp = new ListParser();
listXmlDataArr = lp.GetXmlData(mLastSeq);
Log.d("List", "스레드 끝");
Log.d("List", listXmlDataArr.get(0).seqs);
Log.d(log, "총 개수 : " + listXmlDataArr.get(0).counts);
mLastSeq = listXmlDataArr.get(listXmlDataArr.size() -1).seqs;
//Log.d(log, "mLastSeqs 의 값 : " + mLastSeq);
mLockListView = false;
mHandler.sendEmptyMessage(0);
}
}
}
일단 이렇게 리스트를 불러왔는데요
여기에서 동적으로 리스트 뷰에 추가하려 하는데 onscroll 메서드에서 추가로 또 스레드를 호출하면 already thread start 라고 하면서
에러를 발생시키네요
다른 식으로 할 수 있는 방법이 있을까요??



