public View getView(int position, View oldView, ViewGroup parent) {
// TODO Auto-generated method stub
View v;
if (position < 8) { // ���� ��
if (oldView == null) {
v = new TextView(mContext);
((TextView)v).setGravity(Gravity.CENTER);
((TextView)v).setText(mWeekTitleIds[position]);
((TextView)v).setTextColor(mContext.getResources().getColor(mWeekColorIds[position]));
}
else {
v = oldView;
}
}
else if (position % 8 == 0) { // ���� ǥ�� ��
if (oldView == null) {
v = new Button(mContext);
((Button)v).setGravity(Gravity.CENTER);
((Button)v).setText(Integer.toString(position/8));
// ���� ��ġ�� ���� ǥ�� ���̹Ƿ� �� ���� ��ġ���Ͱ� �ְ� ���۵Ǵ� ��¥�� ���� +3
int nDay = getDayFromPosition(position) + 1;
Calendar c = (Calendar)mBaseDate.clone();
c.set(Calendar.DATE, nDay);
v.setTag(c);
((Button)v).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Calendar c = (Calendar)v.getTag();
if (c == null) return;
Calendar c1 = (Calendar)c.clone();
c1.add(Calendar.DATE, 6);
DateFormat df = DateFormat.getDateInstance();
new AlertDialog.Builder(v.getContext())
.setTitle(((Button)v).getText() + System.getProperty("line.separator")
+ df.format(new Date(c.getTimeInMillis())) + " ~ " + df.format(new Date(c1.getTimeInMillis())))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
})
.show();
}
});
}
else {
v = oldView;
}
} else if (position >= mStartPos && position <= mEndPos) { // ��ȿ�� ��¥ ����
if (oldView == null) {
v = new TextView(mContext);
((TextView)v).setGravity(Gravity.CENTER);
int nDay = getDayFromPosition(position);
Calendar c = (Calendar)mBaseDate.clone();
c.set(Calendar.DATE, nDay);
v.setTag(c);
((TextView)v).setText(Integer.toString(nDay));
((TextView)v).setTextColor(mContext.getResources().getColor(mWeekColorIds[c.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY + 1]));
v.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
Calendar c = (Calendar)v.getTag();
if (c == null) return;
DateFormat df = DateFormat.getDateInstance();
new AlertDialog.Builder(v.getContext())
.setTitle(df.format(new Date(c.getTimeInMillis())) + System.getProperty("line.separator")
+ mContext.getString(mFullWeekTitleIds[c.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY]))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
/* User clicked OK so do some stuff */
}
})
.show();
}
});
}
else {
v = oldView;
}
} else { // �� ����
v = new TextView(mContext);
}
if (oldView == null) {
v.setLayoutParams(new GridView.LayoutParams(CELL_WIDTH, CELL_HEIGH));
}
return v;
}
private int getDayFromPosition(int position) {
return position - mStartPos + 1 - (int)((position-8)/8);
}
}




너무 광범위한 질문이시네요 .... 소스 통채로 주석을 원하시는건지 >.<;