안드로이드 개발 질문/답변
(글 수 45,052)
ListView 를 활용하여 리스트를 만들었습니다.
OnCreate 에서 해당 리스트 뷰의 OnItemClickListener 를 생성해 주고
원격 서버 DB 에 있는 리스트 중에 일부만 보여주게 했습니다.
그리고 getView() 부분에서 현재 보여준 일부의 데이터의 위치가 마지막을 가리킬 경우
쓰레드를 생성하여 원격 서버에서 좀더 많은 정보를 가져와 ArrayAdapter 에 add 했는데.
이전까지는 OnItemClickListener 이 정상 동작 하다가
위의 업데이트 이후 OnItemClickListener이 동작을 멈춰버리는 겁니다.
왜 이러는지... 도와주세요.
// getView 부분
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list, null);
}
......
if (items.size() - 1 == position && (position < totalCount - 1)) {
new GetItemThread(10, (items.size()/10 + 1), this).start();
}
return v;
}
OnCreate 에서 해당 리스트 뷰의 OnItemClickListener 를 생성해 주고
원격 서버 DB 에 있는 리스트 중에 일부만 보여주게 했습니다.
그리고 getView() 부분에서 현재 보여준 일부의 데이터의 위치가 마지막을 가리킬 경우
쓰레드를 생성하여 원격 서버에서 좀더 많은 정보를 가져와 ArrayAdapter 에 add 했는데.
이전까지는 OnItemClickListener 이 정상 동작 하다가
위의 업데이트 이후 OnItemClickListener이 동작을 멈춰버리는 겁니다.
왜 이러는지... 도와주세요.
// getView 부분
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list, null);
}
......
if (items.size() - 1 == position && (position < totalCount - 1)) {
new GetItemThread(10, (items.size()/10 + 1), this).start();
}
return v;
}
제가 잘못 생각했군요.
getView() 에서 리스트의 마지막을 체크한다는 발상 자체가 무지의 소산이었던 것 같습니다.
리스트의 마지막이 스크롤 될 경우의 처리를 스크롤 리스너로 옮기니까 아주 잘 동작하는군요.