zoukankan      html  css  js  c++  java
  • 团队冲刺第十天

    今天在昨天的基础上,增加了打卡的功能实现,点击打卡,显示打卡成功。根据不同时间段的日期,会有返回当前日期提醒。遇到的问题:当天打卡后,不可以时时更新显示在日历上,只有返回别的界面或者重选日期再次回到当前日期时才会显示打卡标志。计划明天完成这个功能。

    相关代码:

    package com.example.rili.sign;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    
    import java.util.ArrayList;
    
    import java.util.List;
    
    
    public class SignInHelper {
    
        private static final String TAG="SignInHelper--->>>";
        private SQLiteDatabase db;
        public SignInHelper(Context context){
            db=new LocalDbOpenHelper(context).getReadableDatabase();
        }
    
        public void insert(String signIn){
            String sql = "insert into signIn values('"+signIn+"')";
            db.execSQL(sql);
        }
    
        public List<String> query(int year,int month) {
            String mid = month > 9 ? "-" : "-0";
            String selection = "date like ?";
            String[] selectArgs = new String[]{"%" + year + mid + month + "%"};
    
            Cursor cursor = db.query("signIn",null,selection,selectArgs,null,null,null);
            List<String> result=new ArrayList<>();
            while (cursor.moveToNext()){
                String  date=cursor.getString(cursor.getColumnIndex("date"));
                result.add(date);
            }
                cursor.close();
            return result;
        }
    }
    View Code
    package com.example.rili;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.DatePickerDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.example.rili.view.MonPickerDialog;
    import com.example.rili.view.SignView;
    
    import java.util.Calendar;
    
    public class MainActivity extends AppCompatActivity {
    
        private static final String TAG = "MainActivity--->>>";
        private SignView signDate;
        private TextView tvYear;
        private Button sign;
        private Context context = this;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView() {
            sign = findViewById(R.id.btn_sign);
            signDate = findViewById(R.id.signDate);
            tvYear = signDate.findViewById(R.id.tvYear);
            signDate.init();
            if(signDate.isSign()) {
                sign.setBackgroundColor(Color.GRAY);
                sign.setText("今日已打卡");
                sign.setClickable(false);
            }else {
                sign.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        handle();
                    }
                });
            }
    
            tvYear.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showMonPicker();
                }
            });
        }
    
    
    
        private void handle() {
            signDate.signIn(new DateAdapter.OnSignListener() {
                @Override
                public void OnSignedSucceed() {
                    showToast("打卡成功");
                    sign.setBackgroundColor(Color.GRAY);
                    sign.setText("今日已打卡");
                    sign.setClickable(false);
                }
    
                @Override
                public void OnSignedFail() {
                    showToast("打卡失败");
                }
    
            });
    
        }
    
    
    
        private void showMonPicker() {
            final Calendar localCalendar = Calendar.getInstance();
            localCalendar.setTime(DateUtil.strToDate("yyyy-MM", tvYear.getText().toString()));
            MonPickerDialog dialog = new MonPickerDialog(context,new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    localCalendar.set(Calendar.YEAR, year);
                    localCalendar.set(Calendar.MONTH, monthOfYear);
                    localCalendar.set(Calendar.DATE, dayOfMonth);
                }
            }, localCalendar.get(Calendar.YEAR), localCalendar.get(Calendar.MONTH),localCalendar.get(Calendar.DATE));
    
            dialog.show();
    
            dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tvYear.setText(DateUtil.calendarToDateTime(localCalendar, "yyyy-MM"));
                    refresh(localCalendar.get(Calendar.YEAR),localCalendar.get(Calendar.MONTH)+1);
                }
            });
        }
    
    
    
        private void refresh(int year,int month) {
            if(year!=DateUtil.year || month!=DateUtil.month){
                signDate.init(year,month);
                sign.setBackgroundColor(getResources().getColor(R.color.sky_blue));
                sign.setText("返回当前日期");
                sign.setClickable(true);
                sign.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        initView();
                    }
                });
    
            }
    
        }
    
        private void showToast(String msg){
            Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    
        }
    
    }
    View Code

    运行截图:

  • 相关阅读:
    设计模式-享元模式
    设计模式-外观模式
    设计模式-桥接模式
    设计模式-适配器模式
    设计模式-代理模式
    java设计模式中用到的UML图
    VS code 初次安装配置
    CMD部分操作、BAT、以及VS SQL部分快捷键
    网络部分
    CMD 中certutil 操作命令
  • 原文地址:https://www.cnblogs.com/hhjing/p/12770062.html
Copyright © 2011-2022 走看看