original source : https://youtu.be/tg36VJUkE4s

image

===========================================================

image

===========================================================

image

===========================================================

image
image

===========================================================

image
image

===========================================================

image

일반 api 11 이후의 activity를 사용하는 경우 android.app.fragment가 참조명이 될것이고 support library를 사용하는 경우 android.support.v4.fragment 와 같은 형태가 될것이다.

===========================================================

image

===========================================================

image
image

android studio에서 fragment를 만드는 과정을 보여주고 있다.

===========================================================

image

하단의 내용 inflater.inflate(R.layout.fragment_first, container, false)는 fragment_first를 생성하되container에 fragment_first를 덧붙이지는 말라는 뜻이다. 덧붙이는 작업은 fragment manager가 알아서 하기때문이다.

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

<fragment>를 이용해서 만들수도 있고 아래 아래와 같이 일반 layout에 틀을 만들고 그곳에 덧붙일수도 있다.

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

activity가 어떤 이유로 close되어야 하는 경우 기존 activity의 정보를 bundle의 형태로 기억하고있다가 다시 생성될때 추가한다. 이때 activity가 fragment의 상태를 유지한다. 그런데 위의 코드와 같은 경우 replace 대신에 add를 사용하는 경우 시스템이 activity를 다시 띄울때 복구시킨 fragment에 또 fragment를 더하기때문에 중복이 될수 있다.

original source : https://youtu.be/FQ270Hsczig

image

google에서는 모든 데이터를 가져오는 작업을 loader를 통해 하기를 권장한다. 그래서 때로는 custom loader제작이 필요해진다.

===========================================================

image
image

loader의 한 종류로 AsyncTaskLoader, CursorLoader등등이 있다.

===========================================================

image
image

loader의 메소드를 보여주고 있다.

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

===========================================================

image

LoaderCallbacks<Cursor>에서 Cursor는 loader가 리턴하는 데이터 타입이 Cursor이기 때문에 Cursor로 기입되었다. 

===========================================================

image

adapter의 changeCursor를 쓰지만 CursorLoader의 경우 Cursor close작업은 CursorLoader에서 이미 처리했으므로 adapter에서 다시 중복해서 할피요가 없으므로 close작업을 하지 않는 swapCursor를 이용했다.

===========================================================

image

AsyncTaskLoader에서는 데이터를 가져오는 작업을 loadInBackground에서 한다.

===========================================================

image

===========================================================

image

original source: https://youtu.be/Z1bwv1pxy8Q

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

original source : https://youtu.be/ycK7uN_fJJM

이강의에서 만들고자 하는 예시는 위와 같다. 오른쪽은 체팅리스트 이고 왼쪽은 상세 채팅내용이다.

===========================================================

SimpleCursorAdapter는 ResourceCursorAdapter를 extends하고 ResourceCursorAdapter는 CursorAdapter 를 extends한다.

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

original source : https://youtu.be/qqB2OJTg1RU

===========================================================

===========================================================

===========================================================

===========================================================

adapter안에 이미 다른 cursor의 내용이 있을수 있으므로 changeCursor()를 이용 내용을 새롭게 고쳐준다.

===========================================================

===========================================================

===========================================================

===========================================================

original source : https://youtu.be/8Xiqg86GWl8

rawQuery()는 Cursor obj를 리턴한다.

===========================================================

위의 그림에 빨간색으로 age는 내용에 오타가 있어서 수정한 것이다.

===========================================================

Cursor는 기본적으로 -1부터 시작된다. 즉 아무런 데이터가 없는 경우에 cursor는 -1위치에 있게 된다. 실제 data는 0부터 시작된다.

===========================================================

===========================================================

===========================================================

nullColumnHack에 기입된 칼럼의 경우 데이터가 주어지지 않는 경우 NULL값이 배정되서 exception 발생을 막는다.

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

COLLATE LOCALIZED ASC는 지역언어를 정렬의 우선으로 하는 기능이다. 

===========================================================

original source : https://youtu.be/ViXxH72PEII

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================

===========================================================