// 고수 님들도와 주세요..
아래소스중 파란색 부분이 문제가 있는것 같습니다.
제가 안드로이드 처음이라 안드로이드 메커니즘을 잘못 이해해서 생기는 문제 인것 같습니다.
지금 아래 소스는 커스텀그리드 뷰안엔 행별로 버턴이 들어있습니다.
이버턴을 클릭시 다이얼로그 박스가 나타나고 다이얼로그박스에서 날짜를 선택시 클릭한 버턴의 텍스트 값으로 설정하려고 합니다.
이때 날짜가 매번 한박자 늦게 클릭한버턴에 설정이 됩니다.
예를들면 버턴을 클릭하여 다얼로그에서 2011.03.03 을 선택하면 버턴에 2011.03.03으로 설정이 안되고요 , 방금 클릭한 버턴을
한번더 클릭시 2011.03.03 이라고 버턴에 설정이 됩니다.
package babynote.ggachi.co.cc;
import java.util.ArrayList;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
class VaccAdapter extends BaseAdapter{
Context mainContext;
int layout;
ArrayList<MyimmRecord> arayItems;
LayoutInflater inflater;
TextView txtseq;
String date_selected;
Button bb1;
VaccAdapter(Context context, int alayout, ArrayList<MyimmRecord> aItems){
mainContext = context;
layout = alayout;
arayItems = aItems;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arayItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return arayItems.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final int pos = position;
if(convertView == null){
convertView = inflater.inflate(layout,parent,false);
}
Button jupnm = (Button) convertView.findViewById(R.id.btnjupnm); // 접종명
jupnm.setText(arayItems.get(position).Gubun_Nm);
bb1 = (Button) convertView.findViewById(R.id.btnb1); // 기본1차
bb1.setText(arayItems.get(position).B1);
bb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DialogDatePicker();
bb1.setText(date_selected);
}
});
Button bb2 = (Button) convertView.findViewById(R.id.btnb2); // 기본2차
bb2.setText(arayItems.get(position).B2);
Button bb3 = (Button) convertView.findViewById(R.id.btnb3); // 기본3차
bb3.setText(arayItems.get(position).B3);
Button aa1 = (Button) convertView.findViewById(R.id.btna1); // 추가1차
aa1.setText(arayItems.get(position).A1);
Button aa2 = (Button) convertView.findViewById(R.id.btna2); // 추가2차
aa2.setText(arayItems.get(position).A2);
Button aa3 = (Button) convertView.findViewById(R.id.btna3); // 추가3차
aa3.setText(arayItems.get(position).A3);
//--------------------------------------------------------------------
Button bb1m = (Button) convertView.findViewById(R.id.btnb1m); // 기본1차
bb1m.setText(arayItems.get(position).B1M);
Button bb2m = (Button) convertView.findViewById(R.id.btnb2m); // 기본2차
bb2m.setText(arayItems.get(position).B2M);
Button bb3m = (Button) convertView.findViewById(R.id.btnb3m); // 기본3차
bb3m.setText(arayItems.get(position).B3M);
Button aa1m = (Button) convertView.findViewById(R.id.btna1m); // 추가1차
aa1m.setText(arayItems.get(position).A1M);
Button aa2m = (Button) convertView.findViewById(R.id.btna2m); // 추가2차
aa2m.setText(arayItems.get(position).A2M);
Button aa3m = (Button) convertView.findViewById(R.id.btna3m); // 추가3차
aa3m.setText(arayItems.get(position).A3M);
return convertView;
}
private void DialogDatePicker(){
Calendar c = Calendar.getInstance();
int cyear = c.get(Calendar.YEAR);
int cmonth = c.get(Calendar.MONTH);
int cday = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
// onDateSet method
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
date_selected = String.valueOf(year%100)+"."+String.valueOf(monthOfYear+1)+
"."+String.valueOf(dayOfMonth);
}
};
DatePickerDialog alert = new DatePickerDialog(mainContext, mDateSetListener,
cyear, cmonth, cday);
alert.show();
}// Datapick end
}// CustomAdapter End