[ ListView 정의 ]

 

1. 정의

    1. 안드로이드에서는 ListView처럼 여러 개의 아이템 중에 하나를 선택할 수 있는 위젯들을 '선택위젯'이라고 한다.

    2. 선택할 수 있는 여러 개의 아이템이 표시되는 선택위젯은 어댑터(Adapter)를 통해 각각의 아이템을 화면에 디스플레이한다.

        따라서 원본 데이터는 어댑터에 설정해야 하며 어탭터가 데이터 관리 기능을 담당한다.

        선택 위젯에 보이는 각각의 아이템이 화면에 디스플레이되기 전에 어탭터의 getView()메소드가 호출 된다.

 

2. 선택 위젯

    1. 일반 위젯들은 직접 위젯에 데이터를 설정할 수 있다. 

    2. 선택 위젯은 직접 위젯에 접근하여 데이터를 설정할 수 없다.

    3. 그래서 어댑터(Adapter)패턴을 사용하여, 어댑터에서 만들어주는 뷰를 이용해 리스트뷰의 한 아이템으로 보여주는 방식을 사용한다.

    4. 대표적인 선택위젯 : 리스트뷰/스피너/그리드 뷰/갤러리

 

3. getView()

   1.  이 메소드는 어탭터에서 가장 중요한 메소드로 이 메소드에서 리턴하는 뷰가 하나의 아이템으로 호출 된다.

   - Reference

       public View getView(int position, View converView, ViewGroup parent)

   

    1. position : 아이템의 인덱스를 의미

                       리스트 뷰에서 보일 아이템의 위치 정보이다.

                       0 부터 시작하여 아이템의 개수만큼 파라미터로 전달 된다.

    2. converView : 현재 인덱스에 해당되는 뷰 객체를 의미

                             안드로이드에서는 선택 위젯이 데이터가 많아 스크롤될 때 뷰를 재 활용하는 메커니즘을 가지고 있어

                             한 번 만들어진 뷰가 화면 상에 그대로 다시 보일 수 있도록 되어 있다.

                             (이미 만들어진 뷰들을 그대로 사용하면서 데이터만 바꾸어 보여주는 방식)

    3. parent : 이 뷰를 포함하고 있는 부모 컨테이너 객체이다.

   

4. 하나의 아이템에 여러 정보를 담아 리스트뷰로 보여줄 때 해야 할 일들  (크게 4가지 존재) 

  종류

 정의 

 (1) 아이템을 위한 XML레이아웃 정의하기

 - 리스트뷰에 들어갈 각 아이템의 레이아웃을 XML로 정의함

 - 선택위젯에서 각각의 아이템은 동일한 레이아웃을 가진뷰가 반복적으로 보여짐

    각각의 아이템을 위한 XML레이아웃이 필요함 

 (2) 아이템을 위한 뷰 정의하기

 - 리스트뷰에 들어갈 각 아이템을 하나의 뷰로 정의

   이 뷰는 여러 개의 뷰를 담고 있는 뷰그룹이어야 함

 - 어댑터의 getView()메소드에서 리턴해 줄 뷰를 별도의 클래스로 정의하여 사용

 (3) 어댑터 정의하기

 - 데이터 관리 역할을 하는 어댑터 클래스를 만들고 그 안에 각 아이템으로

    표시할 뷰를 리턴하는 getView()메소드를 정의함 

 (4) 리스트뷰 정의하기

 - 화면에 보여줄 리스트뷰를 만들고 그 안에 데이터가 선택되었을 때

   호출될 시트너 객체를 정의함 

 

5. 스피터

   1. 정의 : 여러 아이템 중에서 하나를 선택하는 전형적인 위젯

   2. xml 레이아웃에 <Spinner>태그를 이용해 추가한 후 사용할 수 있다.

 

6. ArrayAdapter

    1. 정의 : 배열로 된 데이터 이용

    2. Reference

       - public ArrayAdapter(Context context, int textViewResourceId, T[] objects)

          . context : Context객체이므로 액티비티인 this를 전달하면 됨

          . textViewResourceId : 뷰를 초기화할 때 사용되는 XML레이아웃의 리소스 ID값으로 이코드에서는

                                              android.R.layout.simple_spinner_item과 같은 형식을 전달하면 됨

          . objects : 아이템으로 보일 문자열 데이터들의 배열임

 

'[Android] - 개념 > ListView' 카테고리의 다른 글

ListView 기본 개념  (0) 2017.01.18
ListView 기초예제1  (0) 2016.12.06
Posted by 농부지기
,