안드로이드 개발 질문/답변
(글 수 45,052)
private class MapListAdapter extends BaseAdapter {
private Context mContext;
public MapListAdapter(Context context) {
mContext = context;
}
public int getCount() {
return mapList.size();
}
public Object getItem(int position) {
return mapList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Log.d(TAG, "getView() ::: " + position);
MapListView sv;
if (convertView == null) {
sv = new MapListView(mContext);
} else {
sv = (MapListView)convertView;
}
sv.setTitle(mapList.get(position).getTitle());
sv.setMapImage(mapList.get(position).getMapImage());
sv.setExpanded(mapList.get(position).expanded);
return sv;
}
}
리스트 어댑터는 위의 소스와 같습니다. 리스트 상에서 mapList 의 내용이 뿌려지는데,
처음 시작 땐 제대로 뿌려집니다. 그런데, 리스트의 항목을 클릭 했을 때엔.... getView()로 들어오는 포지션 값이 .. 이상하게 들어옵니다.
어댑터의 notifyDataSetChanged() 메서드가 실행되지 않으면 제대로 들어옵니다만,
저 메서드가 실행되면.... 엉뚱한 포지션 값이 들어 옵니다.
그리고, 처음에.... mapList 를 불러올 때... sv 를 list의 0번만 새로 생성하는 건지?...
아니면, 처음엔 list의 모든 항목이 새로 생성되는지...
자꾸 포지션 값이 틀려서.. 엉뚱한 결과물이 나옵니다.. 아, 오늘 하루 종일 삽질 했는데.....
도움을 부탁드립니다.




그리고, notifyDataSetChanged()가 호출되는
시점이 어떤 시점인가요? 혹시 스크롤을 내린 상황이신지? 아니면 아무때나 호출된다는건지?