모닝콜 알람시계를 만들고 있습니다. 그래서 일단..

   1.   TimePicker 를 이용해서 모닝콜 시간을 설정 할수 있게 하고

   2.   TextView 를 이용해서 TimePicker 로 설정한 시간(모닝콜시간)을 볼 수 있게 했습니다.

   3.   TextVIew 에 적힌 시간을 배열을 이용하여 시간과 분으로 나눠서 저장을 하였습니다.

 

그리고 나서 배열에 있는 시간을 DB에 넣어주고...

그 DB에 있는 시간이 되면 서비스.. 알람매너져 부분을 이용하여 시간을 출력되게 하려는데

작업하는 순서가 이게 맞는건가요??

 

이걸 DB쪽으로 어떻게 연결 시키는지에 대해서도 조언 부탁드립니다..

지금 DB연결하는게 제일 이해가 안되고 있습니다...

 

이게 버튼 눌렸을시.. TextView에 있는 시간을 "시간", "분"으로 나누는 겁니다..

 

  Button btnSaveTime = (Button)findViewById(R.id.alarm_save);
  btnSaveTime.setOnClickListener(new Button.OnClickListener(){
   public void onClick(View v) {
     CharSequence text = mTimeDisplay.getText(); 
    String[] arr = ((String) text).split(":");
    String arrHour = arr[0];
    String arrMinute = arr[1];
 }

 

 

테이블은     ("CREATE TABLE alarms (" +
                 "_id INTEGER PRIMARY KEY," +
                 "hour STRING, " +
                 "minutes STRING); ");

 

이렇게 만들어 논 상태구요...

아래부분은... 책 찾아가면서.. 인터넷 찾아가면서 해논 부분인데..

이게 다 필요한가 싶기도 하고...

혼자서 공부하려니 물어볼사람도 없고해서 막막하네요...

그리고 DB부분에..public String getType(Uri uri) 이부분은 무슨 역할을 하는지도 궁금합니다..

 

 

 

 @Override
 public int delete(Uri uri, String selection, String[] selectionArgs) {
        int count;
        long rowId = 0;
        switch (sURLMatcher.match(uri)) {
            case ALARMS:
                count = db.delete("alarms", selection, selectionArgs);
                break;
            case ALARMS_ID:
                String segment = uri.getPathSegments().get(1);
                rowId = Long.parseLong(segment);

                if (TextUtils.isEmpty(selection)) { //string selection 부분이 null 값인지 "" 값인지 확인하는부분
                 selection = "_id=" + segment;
                } else {
                 selection = "_id=" + segment + " AND (" + selection + ")";
                }
                count = db.delete("alarms", selection, selectionArgs);
                break;
            default:
                throw new IllegalArgumentException("Cannot delete from URL: " + uri);
                //부정한 인수, 또는 올바르지 않은 인수를 메소드에 건네준 것을 나타내기 때문에 throw 
        }

        getContext().getContentResolver().notifyChange(uri, null);
        //uri는 contentProvider 의미, Provider 에서  DB가 수정되는 부분에 코드 추가
        return count;
    }

 

 @Override
 public String getType(Uri uri) {
        int match = sURLMatcher.match(uri);
        //문자열안의 요구 정보를 분석하여 정수 코드로 변환하는 uriMatcher라는 유틸리티 클래스
        switch (match) {
            case ALARMS:
                return "vnd.android.cursor.dir/alarms";
                //복수 : vnd.회사명.cursor.dir/타입
            case ALARMS_ID:
                return "vnd.android.cursor.item/alarms";
              //단수 : vnd.회사명.cursor.item/타입
            default:
                throw new IllegalArgumentException("Unknown URL");
        }
    }

 @Override
 public Uri insert(Uri uri, ContentValues values) {
        long row = db.insert("alarms", null, values);
       
        if (row > 0) {
         Uri newUri = ContentUris.withAppendedId(uri, row);
         getContext().getContentResolver().notifyChange(newUri, null);
         return newUri;
        }
      //uri 는 contentProvider 의미, Provider 에서  DB가 수정되는 부분에 코드 추가
        return null;
    }

 @Override
 public Cursor query(Uri uri, String[] projection, String selection,
   String[] selectionArgs, String sortOrder){
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

        int match = sURLMatcher.match(uri);
        switch (match) {
            case ALARMS:
                qb.setTables("alarms");
                break;
            case ALARMS_ID:
                qb.setTables("alarms");
                qb.appendWhere("_id=");
                qb.appendWhere(uri.getPathSegments().get(1));
                // uri값에 들어있는 ID값으로 테이블 항목 가운데 특수한 값을 가져올수 있도록 where구문을 추가
                break;
            default:
                throw new IllegalArgumentException("Unknown URL " + uri);
        }

        Cursor ret = qb.query(db, projection, selection, selectionArgs,
                              null, null, sortOrder);
        return ret;
    }

 @Override
 public int update(Uri uri, ContentValues values, String selection,
   String[] selectionArgs) {
        int count;
        long rowId = 0;
        int match = sURLMatcher.match(uri);
        switch (match) {
            case ALARMS_ID: {
                String segment = uri.getPathSegments().get(1);


                //get(1)호출로 종목에 대한 id를 추출해 낸다.
                //정보를 제공하는 쪽은 URI를 통해 어떤 종류의 정보를 제공하는지를 밝히고
                //정보를 사용하는 쪽은 URI를 통해 필요한 정보를 요청한다


                rowId = Long.parseLong(segment);


                //Long Class의 parseLong()메소드는 매개변수로 넘어가는 String 타입의 문자열을

                //  long 타입으로 변환 해 주는 기능함
                //즉, String타입에 문자열로 저장되어 있는 실수를 Long.parseLong()메소드를 사용해 long타입으로
                //변환 후 long 타입의 변수인 num에 저장


                count = db.update("alarms", values, "_id=" + rowId, null);
                break;
            }
            default: {
                throw new UnsupportedOperationException(
                        "Cannot update URL: " + uri);
            }
        }
        getContext().getContentResolver().notifyChange(uri, null);


      //uri는 contentProvider 의미, Provider에서  DB가 수정되는 부분에 코드 추가
        return count;
    }
  

 

 

질문이 너무 두서 없었네요.. 다시 말하자면..

 

1. 제가 작업하려는 방식이 맞는지..

2. TextView 부분에서 배열로 뽑아온 내용을 DB에 어떻게 연결시키는지..   <--이게 젤 시급...

3. public String getType(Uri uri) 가 무슨 역할을 하는건지가 궁금합니다.

 

여기까지 읽어 주셔서 감사합니다..

전 계속 검색을 해가며 일단 공부를...ㅜㅜ 댓글좀 달아주시면 많은 도움이 될것같습니다. 감사합니다(__)

안녕하세요(__)