//모바일 응용 , DB 2번째 내용과 Preference
cursorAdapter
cursor가 adapter에 직접 전달, cursor을 사용해 db의 내용을 바로 수정/삭제가 가능하다.(arraylist에서 arraylist를 만든 후 db를 list에 저장하고 list를 가져온 대신 curosr를 이용해 디비의 내용을 직접 가져온다)
그동안의 arraylist의 pos를 통해 정보의 위치를 확인했다면 cursor에서는 id를 통해 커서가 가리키는 디비 내용을 보여줌
simplecursor : simple layout
화면에 여러개의 데이터를 표시, 하나의 데이터 레이아웃과 어떤 정보들을 결합해주어 목록에 띄울 때는 (custom layout이 필요할 경우 - 화면을 직접 꾸며야하는 경우) CursorAdapter 상속하여 구현.
primary key 이름은 반드시 "_id" 컬럼으로 지정해준다.
<br>
SimpleCursorAdapter(자료강의 5p)
안드로이드에서 만들어진 어댑터, id도 지정되어 있음.
simple_list_item1은 TextView 하나로 구성되어 있음, simple_list_item2는 TextView 두개로 구성되어 두개의 컬럼을 넣을 수 있다
커서에서 "name"이라는 컬럼 정보를 text1자리에 보여줘라, name정보는 커서가 가지고 있다
flag는 자동으로 ...
//onCreate 처음 생성될 때 한번만 실행, activity가 실행될 때는 아직 디비를 가지고 오지 않기 때문에 이곳에 cursor를 쓰지 않음
//onResume(화면에 보여지기 직전에 실행됨)에 써주는게 좋다. simpleCursor는 다행히 처음 생성될 때 null을 써주는 것이 가능하다.
//cursor가 바뀌었으니 새로운 정보가 보여지게 된다. notify를 시켜주지 않아도 바뀐 부분만 바꿔치기(?)
//cursorAdapter에 들어가 있는 cursor는 close 시키면 안된다. close 시키면 커서가 날라감-정보가 날라감
//나중에 관리할 때 cursor close 시키는데 destroy 시점에 close 시킨다.
//swapCursor() : 커서를 바꿔치기하고 close하지 않고 보존한다. 다시 swap하면 이전의 내용 다시 swap, 바뀐 내용으로 화면을 보여주다가 다시 전체 내용, 이전의 내용을 다시 보여준다.
//ChangCursor() : 현재 어댑터에 설정되어 있는 cursor를 close한 후 매개변수 cursor로 adapter 재설정
클릭이나 롱클릭 시 cursor가 가리키는 내용을 id를 통해 알 수 있음.
<Br>
커스텀 CursorAdapter (강의자료 8페이지)
CursorAdapter를 상속 받음.
재정의해야하는 메소드 3가지
생성자 : adapter사용할 때 재정의
newView() : view를 새로 만든다, 리스트 뷰에 보여지는 한칸한칸, inflator 사용하여 listview에 표시할 layout 객체 생성
bindView() : 디비의 내용과 화면의 요소를 결합(연결), 만들어진 객체의 요소들을 실제 디비의 내용과 결합
public MyCursorAdapter(Context context, int layout(추가), Cursor c) //매개변수에 레이아웃
inflator : 레이아웃에서 실제 자바 객체(?)로 만들어야하니까(?)
<br>
Preference
key 와 그와 대응되는 value의 쌍으로 값을 저장, 내부적으로 xml형태로 저장됨, 영구 저장
ex . 사용자 설정 정보- 네트워크를 켜다/끄다, 아이디 자동 저장 등
getSharedPreference는 앱에 있는 모든 액티비티들이 공유할 수 있다.
getPreference는 특정 액티비티 전용이라고 생각하면 된다.
사용자 설정 정보를 만들어진 기본 형태가 있는데 그것도 preference라고 부름.(설정정보 같은거 preference에 저장함)
mode값 0 하면 읽기 쓰기 다 가능.
아이디 자동 저장 시 아이디를 어딘가에 저장 -> Preference, 실행하자마자 값을 읽어옴 - onCreate
화면이 사라지는 순간 데이터를 저장 (앱 저장 or 저장 체크박스 클릭 등) - 쓰기, onPause
파일이름은 내가 지정, mode는 0
preference를 직접 쓸 수는 없고 edit()라는 객체를 얻어와야 한다.
edit는 반드시 commit를 해야 값이 씌여짐 -> 내부 경로에 config 파일이 생성되고 저장
값이 없을 때는 뒤에 default 값 String id = spf.getString("id", "")
에뮬레이터로 돌릴 때 [view]-[tool windows]-[device file explorer]에서 config.xml 파일에 아이디가 저장되는 것을 확인할 수 있음
'2018-2학기 > 모바일 응용' 카테고리의 다른 글
[Mobile] Notification & Broadcast (0) | 2018.10.24 |
---|---|
모바일 응용_ 프로젝트 기획 (0) | 2018.10.12 |
[Mobile] AsyncTask (0) | 2018.10.11 |
[Mobile] Preference, Network, Thread (0) | 2018.10.11 |
[Mobile] SqLite 1 (0) | 2018.09.17 |