public class MainActivity extends Activity {
//Log標簽
private static final String TAG = "SIGN";
//聲明對象
private Button sign;
private TextView show;
private GridView myDate;
//獲得本地時間
Time nowTime = new Time();
//1個月內的天數
private int dayMaxNum;
private int year,month,day,ym;
private SignDAO sdao;
//查詢結果
private List<String> list = new ArrayList<String>();
private ArrayList<HashMap<String, Object>> sinalist,alisttmp;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "SIGN is onCreate");
//初始化對象
init();
//初始化
數據庫信息
initdata();
myDate.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//判斷是不是已簽到 從
服務器獲得簽到信息
//摹擬從本地
數據庫獲得信息
if(day==arg2+1)//只能當天簽到
{
sinalist = sdao.findSinInfo("zhangsan",year+"-"+month+"-"+(arg2+1),"0");
if(sinalist.size()>0)
{
Toast.makeText(getApplicationContext(), "已簽過到不能重復簽到", 200).show();
Log.d("", "已簽到");
}
else
{
//在
數據庫插入1條數據
sdao.insertSinInfo("zhangsan", "張3", year+"-"+month+"-"+(arg2+1),year+""+month);
initdata();
}
}
}
});
}
/**
* @param 初始化對象
*/
private void init(){
sign = (Button)this.findViewById(R.id.sign);
show = (TextView)this.findViewById(R.id.show);
myDate = (GridView)this.findViewById(R.id.myDate);
//取本地時間(時間應當從
服務器獲得)
nowTime.setToNow();
year = nowTime.year;
month = nowTime.month+1;
day = nowTime.monthDay;
show.setText(year+"-"+month+"-"+day);
}
/**
* @param 初始化
數據庫信息
*/
private void initdata(){
sdao = new SignDAO(MainActivity.this);
sdao.open();
sinalist = sdao.findSinInfo("zhangsan","",year+""+month);//查詢當月已簽到的日期
list.clear();
dayMaxNum = getCurrentMonthDay();
for(int i=0;i<dayMaxNum;i++)
{
list.add(i, i+1+"");
}
myDate.setSelector(new ColorDrawable(Color.TRANSPARENT));
myDate.setAdapter(new getDayNumAdapter(getApplicationContext()));
}
class getDayNumAdapter extends BaseAdapter{
Context c;
public getDayNumAdapter(Context c)
{
this.c = c;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = LinearLayout.inflate(c, R.layout.date, null);
TextView txtWeek = (TextView)v.findViewById(R.id.txtWeekDateMB);
TextView txtDay = (TextView)v.findViewById(R.id.txtDayDateMB);
switch (position)
{
case 0:
txtWeek.setText("1");
break;
case 1:
txtWeek.setText("2");
break;
case 2:
txtWeek.setText("3");
break;
case 3:
txtWeek.setText("4");
break;
case 4:
txtWeek.setText("5");
break;
case 5:
txtWeek.setText("6");
break;
case 6:
txtWeek.setText("日");
break;
}
if(position<7)
{
txtWeek.setVisibility(View.VISIBLE);
}
int lstDay = Integer.parseInt(list.get(position));
//標記當前日期
if(day==lstDay)
{
txtDay.setText(list.get(position).toString());
txtDay.setTextColor(Color.RED);
}else
txtDay.setText(list.get(position).toString());
//標記已簽到后的背景
for(int i=0;i<sinalist.size();i++)
{
String nowdate = sinalist.get(i).get("sindate").toString();
String[] nowdatearr = nowdate.split("-");
if(lstDay==Integer.parseInt(nowdatearr[2])){
txtDay.setBackgroundColor(Color.BLUE);
++ym;
}
sign.setText("已簽到天數:"+ym);
}
return v;
}
}
//獲得當月的 天數
public int getCurrentMonthDay() {
Calendar a = Calendar.getInstance();
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, ⑴);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
}