zoukankan      html  css  js  c++  java
  • 第二阶段冲刺05

    今天尝试做了做闹钟提醒,学了学相关的内容。

    public class AlarmView extends LinearLayout {
     
     
       
        @Override
        protected void onFinishInflate() {
            super.onFinishInflate();
     
            btnAddAlarm = (Button)findViewById(R.id.btnAddAlarm);
            lvAlarmList = (ListView)findViewById(R.id.lvAlarmList);
     
     
           lvAlarmList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
               @Override
               public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
                   new AlertDialog.Builder(getContext()).setTitle("操作选项").setItems(new CharSequence[]{"删除","添加"}, new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int which) {
                           switch (which){
                               case 0:
                                   deleteAlarm(position);
                                   break;
                               case 1:
                                   addAlarm();
                               default:
                                   break;
                           }
                       }
                   }).setNegativeButton("取消",null).show();
                   return true;
               }
           });
            adapter = new ArrayAdapter<AlarmData>(getContext(),android.R.layout.simple_list_item_1);
            lvAlarmList.setAdapter(adapter);
            readSaveAlarmList();
            //adapter.add(new AlarmData(System.currentTimeMillis()));
            alarmManager = (AlarmManager)getContext().getSystemService(Context.ALARM_SERVICE);
            calendar = Calendar.getInstance();
            btnAddAlarm = (Button)findViewById(R.id.btnAddAlarm);
            btnAddAlarm.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    addAlarm();
                }
            });
        }
     
        private void deleteAlarm(int position){
            AlarmData ad = adapter.getItem(position);
            adapter.remove(ad);
            adapter.notifyDataSetChanged();
            saveAlarmList();
            alarmManager.cancel(PendingIntent.getBroadcast(getContext(),ad.getId(),new Intent(getContext(),AlarmReceiver.class),0));
        }
     
        private void addAlarm(){
            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(System.currentTimeMillis());
            new TimePickerDialog(getContext(),new TimePickerDialog.OnTimeSetListener(){
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
                    calendar.set(Calendar.MINUTE,minute);
                    calendar.set(Calendar.SECOND,0);
                    calendar.set(Calendar.MILLISECOND,0);
                    Calendar currentTime = Calendar.getInstance();
                    if(calendar.getTimeInMillis()<=currentTime.getTimeInMillis()){
                        calendar.setTimeInMillis(calendar.getTimeInMillis()+24*60*60*1000);
                    }
                    AlarmData ad = new AlarmData(calendar.getTimeInMillis());
                    adapter.add(ad);
                    adapter.notifyDataSetChanged();
     
                    alarmManager.set(AlarmManager.RTC_WAKEUP,
                            ad.getTime(),PendingIntent.getBroadcast(getContext(),
                                    ad.getId(),new Intent(getContext(),AlarmReceiver.class),0));
                    saveAlarmList();
                }
            },c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE),true).show();
        }
     
        private void saveAlarmList(){
            Editor editor;
            editor = getContext().getSharedPreferences(AlarmView.class.getName(), Context.MODE_PRIVATE).edit();
     
            StringBuffer sb = new StringBuffer();
            for (int i =0; i<adapter.getCount();i++){
                sb.append(adapter.getItem(i).getTime()).append(",");
            }
            if(sb.length()>1){
                String content = sb.toString().substring(0,sb.length()-1);
                editor.putString(KEY_ALARM_LIST,content);
                System.out.println(content);
            }else {
                editor.putString(KEY_ALARM_LIST,null);
            }
     
            editor.commit();
        }
     
        private void readSaveAlarmList(){
            SharedPreferences sp = getContext().getSharedPreferences(
                    AlarmView.class.getName(),Context.MODE_PRIVATE);
            String content = sp.getString(KEY_ALARM_LIST,null);
     
            if(content != null){
     
                String[] timeStrings = content.split(",");
                for(String string : timeStrings){
                    adapter.add(new AlarmData(Long.parseLong(string)));
                }
            }
        }
     
        private Button btnAddAlarm;
        private ListView lvAlarmList;
        private static final String KEY_ALARM_LIST = "alarmList";
        private ArrayAdapter<AlarmData> adapter;
        private AlarmManager alarmManager;
        private Calendar  calendar;
        private static class AlarmData{
            private String timeLable = "";
            private  long time = 0;
            private Calendar date;
     
            public AlarmData(long time){
                this.time = time;
     
                date = Calendar.getInstance();
                date.setTimeInMillis(time);
                timeLable = String.format("%02d月%02d日 %02d:%02d",
                        date.get(Calendar.MONTH)+1,
                        date.get(Calendar.DAY_OF_MONTH),
                        date.get(Calendar.HOUR_OF_DAY),
                        date.get(Calendar.MINUTE));
            }
            public AlarmData(String ad){
                this.timeLable = ad;
            }
            public void setTime(long time){
                this.time = time;
            }
            public long getTime(){
                return time;
            }
            public void setTimeLable(String timeLable){
                this.timeLable = timeLable;
            }
            public String getTimeLable(){
                return timeLable;
            }
     
            @Override
            public String toString() {
                return getTimeLable();
            }
     
            public int getId(){
                return (int)(getTime()/1000/60);
            }
     
        }
    }
  • 相关阅读:
    Spring Security教程(一)
    java报错:The reference to entity "characterEncoding" must end with the ';' delimiter.
    SpringBoot定时任务升级篇(动态添加修改删除定时任务)
    SpringBoot几种定时任务的实现方式
    JDK中的Timer和TimerTask详解
    SpringMVC拦截器与SpringBoot自定义拦截器
    Java注解入门
    Servlet 4.0 入门
    spring邮件发送
    class path resource [spring/ApplicationContext-springmvc.xml] cannot be opened because it does not exist
  • 原文地址:https://www.cnblogs.com/xjmm/p/13060795.html
Copyright © 2011-2022 走看看