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 list = new ArrayList();

private ArrayList> 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

{

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

{

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;

}

}

DBHelper.java

public class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context) {

super(context, "sign.db", null, 1);

}

/**

* @param创建表

*/

@Override

public void onCreate(SQLiteDatabase db) {

String sql="create table sinTB(" +

"sin_id integer primary key autoincrement," +

"userid varchar(20)," +

"usernmae varchar(20)," +

"sindate varchar(20)," +

"yearmonth varchar(20)," +

"nowdate integer" +

")";

db.execSQL(sql);

}

/**

* @param数据库版本更新时,会调用此方法

*/

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

SignDAO.java

public class SignDAO {

//声明对象

Context context;

SQLiteDatabase db;

DBHelper dbHelper;

public SignDAO(Context context){

this.context = context;

}

/**

* @param 打开数据库连接

*/

public boolean open(){

dbHelper = new DBHelper(context);

db = dbHelper.getWritableDatabase();

if(db == null){

return false;

}

return true;

}

/**

* @param关闭连接

*/

public void close(){

dbHelper.close();

}

/**

* @param插入信息

* @param uid

* @param name

* @param date

* @param ym

*/

public void insertSinInfo(String uid,String name,String date,String month){

String sql="insert into sinTB(userid,usernmae,sindate,yearmonth,nowdate) values(?,?,?,?,?)";

db.execSQL(sql,new Object[]{uid,name,date,month,System.currentTimeMillis()});

}

/**

* @param查询信息

* @param uid

* @param date

* @param ym

* @return

*/

public ArrayList> findSinInfo(String uid,String date,String month){

ArrayList> alist = new ArrayList>();

alist.clear();

HashMap rowMap;

String sql;

try{

if("0".equals(month))

{

sql="select * from sinTB where userid='"+uid+"' and sindate='"+date+"'";

}

else

{

sql="select * from sinTB where userid='"+uid+"' and yearmonth='"+month+"'";

}

Cursor cur = db.rawQuery(sql, null);

cur.moveToFirst();

while(cur.moveToNext()){

rowMap = new HashMap();

rowMap.put("sin_id", cur.getInt(cur.getColumnIndex("sin_id")));

rowMap.put("userid", cur.getString(cur.getColumnIndex("userid")));

rowMap.put("usernmae", cur.getString(cur.getColumnIndex("usernmae")));

rowMap.put("sindate", cur.getString(cur.getColumnIndex("sindate")));

long aa = cur.getLong(cur.getColumnIndex("nowdate"));

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date now = new Date(aa);

String date1 = format.format(now);

rowMap.put("nowdate", date1);

Log.e("", cur.getString(cur.getColumnIndex("sindate")));

alist.add(rowMap);

}

return alist;

}catch(Exception e){

return alist;

}

}

}

日历签到 java_我的Android案例―签到日历相关推荐

  1. Java毕业设计_基于Android的签到点名系统

    基于Android的签到点名系统 基于Android的签到点名系统mysql数据库创建语句 基于Android的签到点名系统oracle数据库创建语句 基于Android的签到点名系统sqlserve ...

  2. android签到功能模块,基于android的课堂签到系统.doc

    基于android的课堂签到系统 本科毕业论文(设计) 题 目 基于Android的课堂签到系统 学生姓名 XXX 指导教师 XX 学 院 信息科学与工程学院 专业班级 计算机科学与技术0908班 完 ...

  3. 日历签到html,简单的手机移动端日历签到js代码

    特效详情: 一款简单的手机移动端日历签到js代码,挺不错的手机签到页面,可自定义已签到日期,连续几天签到代码. js代码 var isSign = false; var myday = new Arr ...

  4. mysql签到Android,MySQL签到设计

    数据库设计: CREATE TABLE `zk_sys_wx_signin` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `openid` VARCHAR(64) ...

  5. php redis 签到,基于Redis位图实现用户签到功能

    场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 当月签到满 ...

  6. 搭建asp会议签到系统 第三章 会议签到

    搭建asp会议签到系统 第一章 账密登录 第二章 生成会议签到二维码 第三章 会议签到 第四章 会议统计 第三章 会议签到 搭建asp会议签到系统 前言 一.制作checkin前端页面 二.读取并展示 ...

  7. 微信考勤签到 php,【投稿】微信签到打卡领积分源码,每日积分签到

    PHPwork模块化扩展开发,轻量mvc,原生php和常用封装,提供PHPwork开发文档,方便二次开发. 小白请勿拍,我们卖的只是源码,只能保证源码使用无错,无技术支持. 程序提供了自动安装,关键配 ...

  8. android 人生日历,android版人生日历日子怎么用 安卓版人生日历日子使用教程

    人生日历android版新发3.3.05.10版本,新增日子功能,那么android版人生日历日子怎么用呢?今天小编就为大家分享安卓版人生日历日子使用教程,一起来看看吧! 人生日历的日子,设计成四叶草 ...

  9. php 会议签到系统_人脸识别会议签到系统有哪些优点?

    随着人工智能的不断发展,人识别在各大场所的应用也是熠熠生辉,它打破了传统签到模式带来的弊端,尤其在会议签到领域,提升有效提升了工作效率,带给参会者以及用户更好的体验. 人脸识别签到系统是怎么工作的? ...

最新文章

  1. 实时把你的脸变成名画,手机摄像头新玩法
  2. 1390 游戏得分(贪心)
  3. 从人的角度分析进销存管理的需求
  4. STM32 进阶教程 10 - RAM中调试程序
  5. mysql --The MEMORY Storage Engine--官方文档
  6. Vmware中mac snow leopard蘋果雪豹系統驅動程式安裝方法
  7. java pdf 首页 缩略图_Java中将上传的文件首页生成缩略图(先将上传的文件转成pdf,然后将pdf转成jpg)...
  8. rabbitmq 消费端代码获取队列名称_C#调用RabbitMQ实现消息队列的示例代码
  9. 30 个 Python 的最佳实践、小贴士和技巧,不可错过哟!
  10. 惊呆了!速度高达15000fps的人脸检测算法!
  11. 怎样用调用资源管理器explore.exe打开指定的文件夹
  12. 自己应该如何不断学习呢?
  13. 阿里云郑晓:浅谈GPU虚拟化技术(第三章)
  14. 添加halcon图像显示控件_Halcon的C#二次开发及经验分享
  15. CDA Level1 考试心得
  16. 一个标准的k-means(误差平方和版本)
  17. 好好说话之off-by-one
  18. 国外问卷调查这个项目可以做吗?
  19. PHP 图片转base64编码 和 base64编码字符串转换成图片保存
  20. 开源ETL工具kettle系列

热门文章

  1. ASP.NET Core IP 请求频率限制
  2. 译 | .NET Core 3.0 Preview 6 已发布
  3. .NET Core实战项目之CMS 第八章 设计篇-内容管理极简设计全过程
  4. 解决C# 7.2中的结构体性能问题
  5. EventBus In eShop -- 解析微软微服务架构eShopOnContainers(四)
  6. 使用 C# 运行符号测试
  7. java 1.7的新特性_[Java]  JDK 1.7版本的 新特性
  8. 基于mysql数据库的应用_MySQL数据库应用
  9. [转]Webpack5(从入门到精通)
  10. C# RichTextBox 实现循环查找关键字