标签:
由于最近参加一个比赛写的智能排插助手需要用到定时触发功能,于是做了一个类似闹钟功能,存储闹钟信息用的时android自带的数据库
源码地址https://github.com/waterCode/SaveEner.git
项目名为saveenergy
考虑到一些人没有用git,因为代码还有完善和修改的地方,等我代码全部写完后之后我会在csdn文件存储上传代码,不过学github还是有很多好处,备份代码就时一大好处,再也不用压缩文件传到云盘啦,哈哈
项目里面的model名为saveenergy的就是我这个项目的源代码
大家一起进步哦,坚持,努力,终有一天我们都可以成为他人口中的大神
有什么问题可以下方留言,我会定时看博客滴
(一)闹钟信息显示部分,一共3部分噢(⊙o⊙)
先上图片,这里主要用了LinearLayout布局,里面有一个listView和imageButton,先说个人觉得要注意的的几点
1.imageButton自带的时灰色背景,textColor要设成透明.
2.这我用的时绿色背景,listView所用的item布局,textView字体白色的,为了方便调试,用tools:textColor=”@color/black”,会方便调试
3.在没有添加闹钟是listview是有上下分割线的,用的是LinearLayout分割线属性
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:divider="@drawable/my_divider"
android:showDividers="beginning|end">
至于listView和item的布局具体代码在我的github里面下来看看
在Activity方面我们需要做的事有
1.初始化布局,拿到各个View的实例,
2.拿到数据库的指针,设置listView的adapter,这里用的是simpleCursorAdapter,关于simplecursorAdapter构造函数最后一个参数Flag需要注意下,这个页面最终的就是simplecursorAdapter设置,因为这个主要是和数据类交互的类,如果你想锻炼下自己可以用BaseAdapter,自己封装类,看你喜好
3为listView和Button设置监听,这里刷新listView用的时
cursorAdapter .notifyDataSetChanged();
(二)接下来当然时闹钟编辑页面啦,加油继续往下看
小二上大图。。
布局部分:
这里上面时用简单的textView和ImageButton,接着时timepicker,接着是一个ListView,小小的剧透下,listView用的时simpleAdapter,点击后会神奇的出现一个开关选择的dialog,和打开和关闭的dialog,哇哈哈这里用的Alertdialog
这里需要注意的有
1.timepicker,可能时android系统原因,timepicker默认
但程序在我的华为p7里面却是上图那样,布局反差很大,一开始让我这菜鸟措手不及,问了学安卓的“同志”们也没人知道,最后在神奇的stayoverflow找到答案,下面这句话可以让他变回面条状,哈哈
android:timePickerMode="spinner"
代码部分:
1.初始化各个组件,获取实例
2.为listView设置数据,用的时simpleAdapter
3,设置各个监听,并将
4.结束时把信息存入数据库,并且系统中设置闹钟
这里要注意的时PendingIntent第二个参数,为了能个设置多个参数,所以我用的时存闹钟信息在数据库的id
int id=dbOperator.getAlarmId(time);//获得新添加时钟在数据库的id
Intent intent=new Intent(this, AlarmReciever.class);
intent.putExtra("_id",id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,id,intent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,alarm.getAlarmTime().getTimeInMillis(),pendingIntent);
(三)就是删除闹钟部分,最后一部分,坚持看下去
上图
这里时由闹钟长按进入,就一个listView,用的还是SimpleCursorAdapter,这里要注意的时重写bindView,因为点击删除按钮的时候要能够监听的到代码
@Override
public void bindView(View view, final Context context, final Cursor cursor) {
super.bindView(view, context, cursor);
final int id = cursor.getInt(0);
ImageButton imageButton = (ImageButton)view.findViewById(R.id.alarm_delete_button);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseOperator operator = new DatabaseOperator(context);
operator.delete(id);
cursor.requery();
adapter.notifyDataSetChanged();
}
});
}
还有数据库那一部分我没讲,这里就省略啦,可以看我的代码
基本上要注意的就是这样了,我只贴出我认为关键的代码部分,和我当时遇到的一些坑我都会以注意的形式说出来,至于源代码在我文章开头提供github地址里面下载下来看看,因为这是这个定时部分我项目的一部分,为防止朋友下载下来不知道在我项目里的哪部分,这里给出设计的代码文件的图片,方便朋友们查找
有关数据哭的类
标签:
原文地址:http://blog.csdn.net/sinat_28676875/article/details/51264467