5. 기본 컨트롤 실습 – 도서 관리 앱

이번에는 앞에서 다루었던 기본 컨트롤을 이용하는 간단한 앱을 만들어 봅시다. 소재는 도서 관리 앱입니다.

[그림] 도서 관리자 실습 실행화면
[그림] 도서 관리자 실습 실행화면
 도서 관리 앱은 도서 추가, 도서 목록, 도서 검색 기능을 제공합니다. 앱의 화면은 세 개의 탭인 HOME(도서 목록), ADD(도서 추가), FIND(도서 검색)으로 원하는 기능을 선택하여 사용할 수 있습니다.

 

먼저 도서 관리자에서 관리할 도서 개체를 Book 클래스로 정의합시다. 도서 개체는 제목, 저자, 보유 개수, 장르를 멤버 필드로 갖고 있고 이들 값을 가져오기 할 수 있는 접근자 메서드 및 생성자로 구성합니다. 참고로 장르는 인문, 자연, 과학, 기타로 정하기로 할게요.

 

이번에는 리스트 뷰에 하나의 도서 정보(여기에서는 제목과 저자 정보만 출력함)를 출력할 때의 Layout을 추가합시다. 여기에서는 1행 2열의 GridLayout에 두 개의 TextView를 배치하는 형태로 정의할게요.

 

이번에는 ListView와 매핑할 BookAdapter 클래스를 정의합시다. BookAdapter클래스는 BaseAdapter 클래스를 기반의 파생 클래스입니다.

도서 개체들을 보관할 컬렉션과 Context, LayoutInflater, layout 번호를 멤버 필드로 선언하세요.

 

BookAdapter 클래스 생성자에서는 Context와 layout 번호를 입력 인자로 받아 멤버 필드를 설정합니다. 그리고 inflacter 개체를 참조합니다.

getCount, getItem, getItemId, getView 메서드를 재정의하세요.

도서 개체를 추가하는 메서드와 도서 개체를 검색하는 메서드를 제공하세요.

 

다음은 BookAdapter.java 소스 파일의 내용입니다.

 

이제 activity_main.xml 파일에 컨트롤을 배치합시다. 여러분께서는 실행 화면과 앞에 소개한 기본 컨트롤 내용을 보면서 배치를 해 보세요.

 

이제 MainActivity.java 소스 파일을 편집합시다. 먼저 배치한 컨트롤을 참조할 멤버 필드를 선언합시다.

 

onCreate 메서드에서는 findViewById 메서드를 호출하여 배치한 컨트롤을 멤버 필드가 참조하게 합니다. 그리고 BookAdapter 개체를 생성하고 ListView와 매핑하세요. 또한 탭 호스트를 setup합니다.

 

세 개의 탭 페이지를 추가합니다. 그리고 첫 번째 탭을 현재 탭으로 설정합니다.

 

FIND 탭을 선택하였을 때에는 컨트롤 정보를 초기화(ClearBookInfo 호출)하세요.

ClearBookInfo 메서드에서는 세 번째 탭에서 보여줄 컨트롤의 속성을 초기 값으로 설정합니다.

 

SeekBar의 값을 변경하면 보유 개수를 나타내는 text 속성을 변경합니다.

 

보유 체크 박스를 선택하면 SeekBar를 활성화하고 선택 해제하면 비활성화합니다. 그리고 비활성화할 때는 보유 개수를 0으로 설정합니다.

 

도서 추가 버튼을 클릭하면 입력 정보를 얻어와서 도서 개체를 생성한 후에 BookAdapter 개체에 추가합니다. 그리고 컨트롤의 속성은 초기값으로 리셋합니다.

 

입력 컨트롤의 값을 리셋하는 Reset 메서드를 정의합시다.

 

취소 버튼을 클릭하면 Reset 메서드를 호출합니다.

 

검색 버튼을 누르면 입력한 도서 제목을 얻어온 후에 BookAdapter 개체의 findBook 메서드를 호출하여 도서 개체를 검색합니다. 그리고 검색한 도서 개체의 정보를 컨트롤에 나타나게 합니다.

 

다음은 MainActivity.java 소스 파일의 내용입니다.