日历签到 java_我的Android案例―签到日历
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案例―签到日历相关推荐
- Java毕业设计_基于Android的签到点名系统
基于Android的签到点名系统 基于Android的签到点名系统mysql数据库创建语句 基于Android的签到点名系统oracle数据库创建语句 基于Android的签到点名系统sqlserve ...
- android签到功能模块,基于android的课堂签到系统.doc
基于android的课堂签到系统 本科毕业论文(设计) 题 目 基于Android的课堂签到系统 学生姓名 XXX 指导教师 XX 学 院 信息科学与工程学院 专业班级 计算机科学与技术0908班 完 ...
- 日历签到html,简单的手机移动端日历签到js代码
特效详情: 一款简单的手机移动端日历签到js代码,挺不错的手机签到页面,可自定义已签到日期,连续几天签到代码. js代码 var isSign = false; var myday = new Arr ...
- mysql签到Android,MySQL签到设计
数据库设计: CREATE TABLE `zk_sys_wx_signin` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `openid` VARCHAR(64) ...
- php redis 签到,基于Redis位图实现用户签到功能
场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 当月签到满 ...
- 搭建asp会议签到系统 第三章 会议签到
搭建asp会议签到系统 第一章 账密登录 第二章 生成会议签到二维码 第三章 会议签到 第四章 会议统计 第三章 会议签到 搭建asp会议签到系统 前言 一.制作checkin前端页面 二.读取并展示 ...
- 微信考勤签到 php,【投稿】微信签到打卡领积分源码,每日积分签到
PHPwork模块化扩展开发,轻量mvc,原生php和常用封装,提供PHPwork开发文档,方便二次开发. 小白请勿拍,我们卖的只是源码,只能保证源码使用无错,无技术支持. 程序提供了自动安装,关键配 ...
- android 人生日历,android版人生日历日子怎么用 安卓版人生日历日子使用教程
人生日历android版新发3.3.05.10版本,新增日子功能,那么android版人生日历日子怎么用呢?今天小编就为大家分享安卓版人生日历日子使用教程,一起来看看吧! 人生日历的日子,设计成四叶草 ...
- php 会议签到系统_人脸识别会议签到系统有哪些优点?
随着人工智能的不断发展,人识别在各大场所的应用也是熠熠生辉,它打破了传统签到模式带来的弊端,尤其在会议签到领域,提升有效提升了工作效率,带给参会者以及用户更好的体验. 人脸识别签到系统是怎么工作的? ...
最新文章
- 实时把你的脸变成名画,手机摄像头新玩法
- 1390 游戏得分(贪心)
- 从人的角度分析进销存管理的需求
- STM32 进阶教程 10 - RAM中调试程序
- mysql --The MEMORY Storage Engine--官方文档
- Vmware中mac snow leopard蘋果雪豹系統驅動程式安裝方法
- java pdf 首页 缩略图_Java中将上传的文件首页生成缩略图(先将上传的文件转成pdf,然后将pdf转成jpg)...
- rabbitmq 消费端代码获取队列名称_C#调用RabbitMQ实现消息队列的示例代码
- 30 个 Python 的最佳实践、小贴士和技巧,不可错过哟!
- 惊呆了!速度高达15000fps的人脸检测算法!
- 怎样用调用资源管理器explore.exe打开指定的文件夹
- 自己应该如何不断学习呢?
- 阿里云郑晓:浅谈GPU虚拟化技术(第三章)
- 添加halcon图像显示控件_Halcon的C#二次开发及经验分享
- CDA Level1 考试心得
- 一个标准的k-means(误差平方和版本)
- 好好说话之off-by-one
- 国外问卷调查这个项目可以做吗?
- PHP 图片转base64编码 和 base64编码字符串转换成图片保存
- 开源ETL工具kettle系列
热门文章
- ASP.NET Core IP 请求频率限制
- 译 | .NET Core 3.0 Preview 6 已发布
- .NET Core实战项目之CMS 第八章 设计篇-内容管理极简设计全过程
- 解决C# 7.2中的结构体性能问题
- EventBus In eShop -- 解析微软微服务架构eShopOnContainers(四)
- 使用 C# 运行符号测试
- java 1.7的新特性_[Java] JDK 1.7版本的 新特性
- 基于mysql数据库的应用_MySQL数据库应用
- [转]Webpack5(从入门到精通)
- C# RichTextBox 实现循环查找关键字