안드로이드 개발 질문/답변
(글 수 45,052)
커스텀 리스트뷰 인데..
포지션 마다 다른 행을 보여주고 싶습니다.
근데 어댑터에서 if문으로 조건을 줬음에도..
화면이 0,1,2,3,4,5,0 순으로 행이추가가 됩니다..
포지션을 찍어보면 0, 1, 2, 3, 4, 5로 나오는데 말이죠..
getview()의 포지션이 왜 맞지않을까요...
미칠거같습니다.. 알려주시면 감사하겠습니다..ㅠㅠ
아래는 어답터 소스 입니다
public class StudyAdapter201 extends ArrayAdapter<Study201Item> {
public StudyAdapter201(Context context, int layoutResource,
ArrayList<Study201Item> objects) {
super(context, layoutResource, objects);
this.mContext = context;
this.mResource = layoutResource;
this.mList = objects;
this.mInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private Context mContext;
private int mResource;
private ArrayList<Study201Item> mList;
private LayoutInflater mInflater;
/**
* @param context
* @param layoutResource
* @param objects
*/
public long getItemId(int position) {
return position;
}
/*
* (non-Javadoc)
*
* @see android.widget.ArrayAdapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Study201Item tweet = GlobalSetting.Study2011Arr.get(position);
boolean tf = false;
if (convertView == null) {
if (getItemId(position) == 0) {
convertView = mInflater.inflate(
R.layout.studymanage201_header_row, null);
} else if (getItemId(position) == 1) {
convertView = mInflater.inflate(
R.layout.studymanage201_first_row, null);
} else {
convertView = mInflater.inflate(
R.layout.studymanage201_second_row, null);
}
}
if (tweet != null) {
// Textview class_nm = (Textview)
// convertView.findViewById(R.id.class_nm);
// ImageView centerIcon = (ImageView)
// convertView.findViewById(R.id.centericon);
// TextView centerName = (TextView)
// convertView.findViewById(R.id.centername);
// TextView centerTel = (TextView)
// convertView.findViewById(R.id.centertel);
// TextView centerAddr = (TextView)
// convertView.findViewById(R.id.centeraddr);
//
// centerName.setText(GlobalSetting.CenterArr.get(position).name);
// centerTel.setText(GlobalSetting.CenterArr.get(position).phone);
// centerAddr.setText(GlobalSetting.CenterArr.get(position).addr);
}
return convertView;
}
}
기본 리스트 뷰를 다시 공부 하심이...
리스트 뷰는 뷰를 재사용 합니다.
예를 들어 화면에 5개의 뷰가 보이면
1~5번까지 뷰를 생성하고 6번뷰를 보여줄때 1번 뷰를 가져와서 6번뷰에서 재사용해서 사용합니다.
포지션이 비정상적인 문제가 아닙니다.