多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 我的Android案例―簽到日歷

我的Android案例―簽到日歷

來源:程序員人生   發布時間:2015-01-29 08:15:31 閱讀次數:4687次

2015年的Android案例之旅

案例8:簽到日歷

知識點:

  1. GridView的使用
  2. SQLite的使用

觸及文件:

  1. res->layout->activity_main.xml 主布局文件
  2. res->layout->date.xml 布局文件
  3. src->db->DBHelper.java java文件
  4. src->db->SignDAO.java java文件
  5. src->activity->MainActivity.java java文件
activity_main.xml
<!-- 線性布局 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical"> <!-- 文本控件 顯示當前月份 --> <TextView android:id="@+id/show" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="月份"/> <!-- 網格視圖 --> <GridView android:id="@+id/myDate" android:layout_width="match_parent" android:layout_height="355dp" android:numColumns="7"></GridView> <Button android:id="@+id/sign" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="簽到"/> </LinearLayout>

date.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/txtWeekDateMB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:visibility="gone" /> <TextView android:id="@+id/txtDayDateMB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" /> </LinearLayout>

MainActivity.java

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; } }
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<HashMap<String, Object>> findSinInfo(String uid,String date,String month){ ArrayList<HashMap<String,Object>> alist = new ArrayList<HashMap<String,Object>>(); alist.clear(); HashMap<String, Object> 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<String, Object>(); 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; } } }






生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人免费在线视频 | 亚洲精品国产福利 | 开心丁香婷婷深爱五月 | 性生活视频网 | 精品国产一区二区三区19 | 欧美一级免费 | 亚洲精品成人久久 | 欧美777 | 青青青青手机在线视频观看国产 | 欧美最猛性xxxxx(亚洲精品) | 久久国内精品 | 国产亚洲一区二区精品 | 午夜宅男在线 | 欧美国产一区二区二区 | 日本高清不卡码 | 天天躁夜夜| 手机看片福利国产 | 伊人网99 | 成人免费精品视频 | 小说亚洲 | 日韩中文字幕精品久久 | 成人免费视频视频在线不卡 | 日韩欧国产精品一区综合无码 | 日韩免费看片 | 国产全部视频 | 精品视频一区二区三区免费 | 最新欧洲大片免费在线看 | 一区视频在线播放 | 在线精品日韩一区二区三区 | аⅴ资源中文在线天堂 | 亚洲高清视频在线观看 | 亚洲国产成人精品一区91 | 国产高清精品91在线 | 欧美video粗暴高清免费 | 狼人天堂网 | 亚洲美女又黄又爽在线观看 | 亚洲精品高清在线一区二区三区 | 国产精品一区二区久久精品涩爱 | 天天久久综合 | 亚洲乱码一二三四五六区 | 亚洲精品专区 |