<안드로이드> 일정관리프로그램: 고정기능

 

위와같이 할 일을 추가하려할 때 선택가능한 옵션이다.
고정기능은 할일에대해 매년, 매월, 아니면 항상 고정 시키기위한 옵션기능이다.

기능
-고정을 체크하면 라디오그룹이 활성화.
-체크된 라디오버튼에의해 고정이 활성화.
-해당 년,월,일에 고정되어 항상 유지한다.
-삭제 구현
-항상, 매년, 매월 순으로 리스트를 정렬.


-고정을 체크하면 라디오그룹이 활성화.

public void radioEnable(boolean b){
    ar.setEnabled(b);
    yr.setEnabled(b);
    mr.setEnabled(b);
}


위에 함수를 만들어서
fragment의 onCreate때 매개변수 b를 false로하여 radiobutton을 비활성화.



fixed.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {
    @Override    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        fd.radioEnable(true);
        if(!b) fd.radioEnable(false);

    }
});
고정Checkbox가 체크가 되었을시 라디오 버튼을 활성화.

-체크된 라디오버튼에 의해 고정이 활성화.

public  void doWrite_Fixed(int y, int m, int d, String str, String fixed){
    try {
        f = new File(context.getFilesDir(), "saveDoListFixed.txt");
        FileWriter fw = new FileWriter(f, true);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.newLine();
        if(fixed == "M"){
            bw.write(fixed+d+":"+str);
            MDoItem.add(str);
        }else if(fixed == "A"){
            bw.write(fixed+y+m+d+":"+str);
            ADoItem.add(str);
        }else if(fixed == "Y"){
            bw.write(fixed+y+m+d+":"+str);
            YDoItem.add(str);
        }

        bw.flush();
        fw.close();

    }catch(IOException e){
       
    };

}

고정목표를 저장하기위한 파일을 따로 생성한다.
저장할때는 상황에 따라 다르게 저장. ex) A2018704:공부하기.


public void doRead_fixed(){
    f = new File(context.getFilesDir(), "saveDoListFixed.txt");
    try {
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);
        String temp;
        String[] split;
        while((temp=br.readLine())!=null){
            if(temp.startsWith("A")){
                try {
                    split = temp.split(":");
                    ADoItem.add(split[1]);
                }catch(Exception e){}
            }
            if(temp.startsWith("Y")){
                try {
                    YDoItem.add(temp);
                }catch(Exception e){}
            }
            if(temp.startsWith("M")){
                try {
                    MDoItem.add(temp);
                }catch(Exception e){}
            }
        }
        fr.close();


    }catch(IOException e){}

}

파일에서 읽어 각 해당 ArrayList에 add한다.

static public void fixedDoItemRead(ArrayList<String> doItem){
    String temp;
    String date;
    if(io.getMDoItem() != null){
        date = "M"+String.valueOf(cal.getPD());
        for(int i = 0; i<io.getYDoItem().size()-1; i++){
            temp = io.getMDoItem().get(i);
            if(temp.startsWith(date)) {
                String[] str = temp.split(":");
                doItem.add(0, str[1]);
            }
        }
    }
    if(io.getYDoItem() != null){
        date = "Y"+String.valueOf(cal.getPY())+String.valueOf(cal.getPM())+String.valueOf(cal.getPD());
        for(int i = 0; i<io.getYDoItem().size()-1; i++){
            temp = io.getYDoItem().get(i);
            if(temp.startsWith(date)) {
                String[] str = temp.split(":");
                doItem.add(0, str[1]);
            }
        }
    }
    if(io.getADoItem() != null){
        doItem.addAll(0,io.getADoItem());
    }

}

원래의 List에 고정목표를 제일위로 올라오도록 추가시킨다.

-삭제구현

일반 할일삭제와 동일하다.

-항상 정렬되도록 구현

리스트는 프래그먼트에의해 구현되어진다. 프래그먼트가 갱신될때 마다 리스트의 항목들도 갱신된다.
프래그먼트의 onCreate 메소드안에 fixedDoItemRead(doItem); 를 호출하여 리스트를 갱신한다.

다음목표

-알림기능구현하기.
ps.
체크기능이 문제가 있다.ㅜ sharedreference 에 check 문장이제대로 저장이 안되서 계속 null로 인식되는것같다.

댓글

가장 많이 본 글