The eighth day of the team sprint-KeepRunningAPP

Summary: Today is mainly to fix yesterday ’s problem and improve the function of the alarm clock, solve the problem that activity can not jump to fragment, the solution is to jump out of the pop-up box after clicking add, the user can set the alarm time and label content It avoids adding an alarm to jump to the activity and then return to the fragment. The second problem is that the user enters the alarm clock interface to display the alarm switch status. The solution is to add a monitoring event to the switch and match it with the stored alarm status of the database to let it display the switch status. So much has been done today, and tomorrow the alarm trigger event is planned. The following is the main code and renderings of today.

package com.alarm;

import android.content.Context;
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.Switch;
import android.widget.TextView;
import android.widget.Toast;

import com.example.keeprunning1.R;

import java.util.List;

public class AlarmAdapter extends BaseAdapter {
    private List<Alarm> mlist;
    private Context mContext;
    private LayoutInflater mlayoutInflater;
    private AlarmOperator malarmOperator;;
    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.mClockType=convertView.findViewById(R.id.switch_control);
            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);
        viewHolder.mClockType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    malarmOperator.updateswitch(name,hour,minute);
                }else{
                    malarmOperator.updateswitch1(name,hour,minute);

                }
            }
        });
        int clockType=bean.getClockType();
        Log.d("volley", String.valueOf(clockType));
        if(clockType==0){
            viewHolder.mClockType.setChecked(false);
        }else {
            viewHolder.mClockType.setChecked(true);
        }
        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 Switch mClockType;
        //public CheckBox mCheckBox;
    }
}
AlarmAdapter
package com.alarm;

import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;

import com.example.keeprunning1.R;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class AlarmFragment extends Fragment {
    private List<Alarm> list;
    private Button addalarm;
    private AlarmOperator alarmOperator;
    private AlarmAdapter alarmAdapter;
    private TextView hour;
    private TextView minute1;
    private EditText content;
    private Button setTime;
    View view;
    String username;
    String hourformat;
    String minuteformat;
    private Calendar calendar;
    private Switch aSwitch;

    @Override
    public  void onCreate (Bundle savedInstanceState) {
         super .onCreate (savedInstanceState);
        Log.i("hello", "hello");
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.alarm, null);
        username = getArguments().getString("username");
        Log.i("username", username);
        addalarm = view.findViewById (R.id.addalarm);
        list = new ArrayList<>();
        alarmOperator = new AlarmOperator (view.getContext ());
        ListView alarmList =view.findViewById(R.id.clock_list);
        init(username);
        alarmAdapter = new AlarmAdapter(view.getContext(), list);
        alarmlist.setadapt is (are alarmadapt);
        addalarm.setOnClickListener (l);
        delete();
        aSwitch=view.findViewById(R.id.switch_control);
        //updateSwitch();
        return view;
    }

    View.OnClickListener l = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.addalarm:
                    alarm();
                    break;
            }
        }
    };

    public void alarm(){
        AlertDialog.Builder builder2 = new AlertDialog.Builder(getView().getContext());
        LayoutInflater inflater2 = LayoutInflater.from(getView().getContext());
        View viewDialog2 = inflater2.inflate(R.layout.addalarm, null);
        hour = viewDialog2.findViewById(R.id.hour);
        minute1 = viewDialog2.findViewById(R.id.minute);
        setTime = viewDialog2.findViewById(R.id.set_time);
        addtime();
        content = viewDialog2.findViewById(R.id.content);
        builder2.setView(viewDialog2);
        builder2.setTitle ( "New alarm clock" );
        builder2.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String userhour = hour.getText().toString().trim();
                String userminute = minute1.getText().toString().trim();
                String usercontent = content.getText().toString().trim();
                Alarm bean = new Alarm(username, userhour, userminute, usercontent, 0);
                Log.d("volley", bean.hour);
                alarmOperator.insert(bean);
                list.add(bean);
                Toast.makeText(view.getContext(), bean.hour+":"+bean.minute+"添加成功", Toast.LENGTH_SHORT).show();
                alarmAdapter.notifyDataSetChanged();
            }
        });
        builder2.setNegativeButton("取消", null);
        builder2.create().show();
    }

    public void addtime() {
        setTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                calendar = Calendar.getInstance();
                int mhour = calendar.get(Calendar.HOUR_OF_DAY);
                int mminute = calendar.get(Calendar.MINUTE);
                new TimePickerDialog(view.getContext(), new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                        calendar.set(Calendar.MINUTE, minute);
                        Calendar currentTime = Calendar.getInstance();
                        if (calendar.getTimeInMillis() <= currentTime.getTimeInMillis()) {
                            calendar.setTimeInMillis(calendar.getTimeInMillis() + 24 * 60 * 60 * 1000);
                        }
                        hourformat = String.format(String.valueOf(hourOfDay));
                        minuteformat = String.format(String.valueOf(minute));
                        Toast.makeText(view.getContext(), "" + hourformat + ":" + minuteformat, Toast.LENGTH_SHORT).show();
                        hour.setText(hourformat);
                        minute1.setText(minuteformat);

                    }
                }, mhour, mminute, true).show();
            }
        });
    }

    public void delete() {
        ListView alarmList = (ListView) view.findViewById(R.id.clock_list);
        alarmList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
                AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                builder.setMessage ( "Are you sure to delete?" );
                builder.setTitle("提示");
                final Alarm[] alarms = {null};
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        alarms[0] = list.get(position);
                        alarmOperator.deletebyuser(username, alarms[0].hour, alarms[0].minute);
                        list.remove(position);
                        alarmAdapter.notifyDataSetChanged();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder.create().show();
                return false;
            }
        });
    }

    private void init(String username) {
        Cursor cursor = (Cursor) alarmOperator.findall(username);
        if (cursor != null) {
            while (cursor.moveToNext()) {
                Alarm bean = new Alarm();
                bean.content = cursor.getString(cursor.getColumnIndex("content"));
                bean.hour = cursor.getString(cursor.getColumnIndex("hour"));
                bean.minute = cursor.getString(cursor.getColumnIndex("minute"));
                bean.username = cursor.getString(cursor.getColumnIndex("username"));
                bean.clockType = cursor.getInt(cursor.getColumnIndex("clockType"));
                Log.d("volley", bean.hour);
                list.add(bean);
            }
            cursor.close();
        }
    }

    //public void updateSwitch(){
//        if(aSwitch.isChecked()==true){
//           alarmOperator.updateswitch(username);
//        }
   // }
}
Alarm fragment

 

 

Guess you like

Origin www.cnblogs.com/MoooJL/p/12757599.html