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

    摘要:今天主要解决了昨天的问题,问题一:当退出APP再进入时,所有的闹钟都变成了关闭状态。这个问题的原因是代码中显示开关按钮状态部分的代码逻辑出现了问题,重新换了个思路后就轻松解决了这个问题。还有就是长按删除的问题,虽然数据可以删除,但是没有解决页面刷新的问题,目前正在找可以在apapter里刷新list的解决方法。除了解决这俩问题,另外又美化了一些界面,并把队友做的音乐播放部分的内容添加到了整个项目中。下面是主要代码和截图。

    package com.alarm;
    
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Build;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.CompoundButton;
    import android.widget.LinearLayout;
    import android.widget.Switch;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import androidx.appcompat.app.AlertDialog;
    
    import com.example.keeprunning1.R;
    
    import java.util.Calendar;
    import java.util.List;
    
    import static android.content.Context.ALARM_SERVICE;
    
    
    public class AlarmAdapter extends BaseAdapter {
        private List<Alarm> mlist;
        private Context mContext;
        private LayoutInflater mlayoutInflater;
        private AlarmOperator malarmOperator;
        Calendar calendar;
    
        public AlarmAdapter(Context context, List<Alarm> list) {
            mContext = context;
            mlist = list;
            mlayoutInflater = LayoutInflater.from(context);
            malarmOperator = new AlarmOperator(context);
        }
    
        @Override
        public int getCount() {
            return mlist.size();
        }
    
        @Override
        public Object getItem(int position) {
            return position;
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final ViewHolder viewHolder;
            if (convertView == null) {
                viewHolder = new ViewHolder();
                convertView = mlayoutInflater.inflate(R.layout.alarmitem, null);
                viewHolder.mHour = convertView.findViewById(R.id.hour);
                viewHolder.mMinute = convertView.findViewById(R.id.minute);
                viewHolder.mContent = convertView.findViewById(R.id.content_item);
                viewHolder.mNet=convertView.findViewById(R.id.net);
                viewHolder.mClockType = convertView.findViewById(R.id.switch_control);
                viewHolder.todetail = convertView.findViewById(R.id.todetail);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
    
            final Alarm bean = mlist.get(position);
            final String name = bean.getUsername();
            final String hour = bean.getHour();
            final String minute = bean.getMinute();
            Log.i("name", name);
            int clockType = bean.getClockType();
            Log.d("volley", String.valueOf(clockType));
            if (clockType == 1) {
                viewHolder.mClockType.setChecked(true);
            } else if (clockType == 0) {
                viewHolder.mClockType.setChecked(false);
                viewHolder.mHour.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                viewHolder.mMinute.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                viewHolder.mNet.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                viewHolder.mContent.setTextColor(mContext.getResources().getColor(R.color.colorGray));
            }
    
            viewHolder.todetail.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                    builder.setMessage("确定删除?");
                    builder.setTitle("提示");
                    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            malarmOperator.deletebyuser(name, hour, minute);
                            //notifyDataSetChanged();
                            AlarmManager am;
                            Intent intent1 = new Intent(mContext, CallAlarm.class);
                            PendingIntent sender1=PendingIntent.getBroadcast(
                                    mContext,0, intent1, 0);
                            am =(AlarmManager)mContext.getSystemService(ALARM_SERVICE);
                            am.cancel(sender1);
                            Toast.makeText(mContext, "删除成功", Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                        }
                    });
                    builder.create().show();
                    return true;
                }
            });
            viewHolder.mClockType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked) {
                        malarmOperator.updateswitch(name, hour, minute);
    //                    viewHolder.mClockType.setChecked(true);
                        Toast.makeText(mContext, "开启闹钟", Toast.LENGTH_SHORT).show();
                        viewHolder.mHour.setTextColor(mContext.getResources().getColor(R.color.colorBlack));
                        viewHolder.mMinute.setTextColor(mContext.getResources().getColor(R.color.colorBlack));
                        viewHolder.mNet.setTextColor(mContext.getResources().getColor(R.color.colorBlack));
                        viewHolder.mContent.setTextColor(mContext.getResources().getColor(R.color.colorBlack));
                        Intent intent = new Intent(mContext, CallAlarm.class);
                        PendingIntent sender = PendingIntent.getBroadcast(
                                mContext, 0, intent, 0);
                        AlarmManager am;
                        //使用闹钟服务
                        am = (AlarmManager) mContext.getSystemService(ALARM_SERVICE);
                        calendar = Calendar.getInstance();
                        calendar.setTimeInMillis(System.currentTimeMillis());
                        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(bean.getHour()));
                        calendar.set(Calendar.MINUTE, Integer.parseInt(bean.getMinute()));
                        calendar.set(Calendar.SECOND, 0);
                        calendar.set(Calendar.MILLISECOND, 0);
                        Log.e("TAG", calendar.getTimeInMillis() + "");
                        Log.e("TAG", System.currentTimeMillis() + "");
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                            if (System.currentTimeMillis() > calendar.getTimeInMillis() + 40000) {
                                //加24小时
                                am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 86400000, sender);
                            } else {
                                am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
                            }
                        }
                    } else if (!isChecked) {
                        malarmOperator.updateswitch1(name, hour, minute);
                        viewHolder.mHour.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                        viewHolder.mMinute.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                        viewHolder.mNet.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                        viewHolder.mContent.setTextColor(mContext.getResources().getColor(R.color.colorGray));
                        Intent intent = new Intent(mContext, CallAlarm.class);
                        PendingIntent sender = PendingIntent.getBroadcast(
                                mContext, 0, intent, 0);
                        AlarmManager am;
                        am = (AlarmManager) mContext.getSystemService(ALARM_SERVICE);
                        am.cancel(sender);
                        Toast.makeText(mContext, "关闭闹钟", Toast.LENGTH_SHORT).show();
    
                    }
                }
            });
            viewHolder.mContent.setText(bean.content);
            viewHolder.mHour.setText(bean.hour+"");
            viewHolder.mMinute.setText(bean.minute+"");
            return convertView;
        }
        public class ViewHolder {
            public TextView mHour;
            public TextView mMinute;
            public TextView mContent;
            public TextView mNet;
            Switch mClockType;
            LinearLayout todetail;
            //public CheckBox mCheckBox;
        }
    }
    AlarmAdapter

  • 相关阅读:
    字符串与模式匹配算法(一):BF算法
    Spring MVC:HandlerMapping
    Spring MVC:DispatchServlet类
    Spring:面向切面编程的AOP
    Java:检查异常与未检查异常
    AOP源码解析:AspectJExpressionPointcutAdvisor类
    Vue+Webpack打包之后超过url-loader大小限制的图片在css的background-image中使用路径问题
    less
    ES6模块的import和export用法总结
    bootstrap4网格
  • 原文地址:https://www.cnblogs.com/MoooJL/p/12770632.html
Copyright © 2011-2022 走看看