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


위와같이 할 일을 추가하려할 때 선택가능한 옵션이다.
고정기능은 할일에대해 매년, 매월, 아니면 항상 고정 시키기위한 옵션기능이다.
기능
-고정을 체크하면 라디오그룹이 활성화.
-체크된 라디오버튼에의해 고정이 활성화.
-해당 년,월,일에 고정되어 항상 유지한다.
-삭제 구현
-항상, 매년, 매월 순으로 리스트를 정렬.
-고정을 체크하면 라디오그룹이 활성화.
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가 체크가 되었을시 라디오 버튼을 활성화.-체크된 라디오버튼에 의해 고정이 활성화.
파일에서 읽어 각 해당 ArrayList에 add한다.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){} }
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로 인식되는것같다.
댓글
댓글 쓰기