티스토리 뷰

본 자료는 숭실대학교 정보통신전자공학부 소속 소모임 BlindC에서 3학년을 대상으로 하는 안드로이드 게임 프로그래밍 스터디 진행을 위하여 작성합니다.

개인의 소중한 창작물이기 때문에 자료의 열람은 자유이고, 소스코드를 긁어갈 수 있도록 우클릭제한이나 기타 제한은 걸어놓지 않았으나, 외부 공개나, 2차 수정등은 자제해주시길 부탁드리며 편의상 반말로 진행하도록 하겠습니다.


지난 시간에 리스트 뷰의 개요와 간단한 동작 원리에 대해서 알아보았는데, 이번 시간에는 리스트 뷰에 실제 데이터를 적용하여 띄우는 것 까지 진행해 보자.


먼저 앞서 제목에 달려있는 어댑터 패턴에 대해서 간단하게 알고 넘어가야 할 필요가 있다.



리스트 뷰와 같이 '목록'을 표현하는 객체는 어댑터라는 개념으로 행 레이아웃과 합쳐서(Composite) 사용하게 된다. 적용할 Data set(ArrayList)와 행 레이아웃을 합쳐서 어댑터를 만들고, 이것을 리스트 뷰에 적용시켜서 화면에 출력하는 것이다.


실제 코드를 보면서 같이 이해해보도록 하자.


1
    ArrayAdapter<String> mAdapter;
cs


먼저 Adapter를 선언, ArrayAdapter는 Adapter 종류 중에서도, 배열과 어댑터 뷰를 연결하는 Adapter 인데, <> 꺾쇠 안에 있는 String은 연결할 배열이 String 배열임을 뜻한다. 어댑터를 선언했으니, 해당 어댑터에 실질적으로 들어가게 될 데이터 셋과 어댑터 뷰를 선언해서 적용해주어야 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
    String[] mAnimals = {
            "사자 : lion",
            "호랑이 : tiger ",
            "표범 : leopard",
            "얼룩말 : zebra",
            "말 : horse",
            "기린 : giraffe",
            "하마 : hippopotamus",
            "악어 : crocodile, alligator",
            "캥거루 : kangaroo",
            "코알라 : koala",
            "코끼리 : elephant",
            "뱀 : snake",
            "사슴 : deer",
            "순록 : reindeer",
            "팬더 : panda",
            "곰 : bear",
            "북극곰 : polar bear",
            "바다사자 : sea lion",
            "바다코끼리 : elephant seal, sea elephant",
            "바다표범 : seal",
            "물개 : fur seal",
            "너구리 : racoon",
            "오리너구리 : platypus",
            "수달 : otter",
            "치타 : cheetah",
            "침팬지 : chimpanzee",
            "원숭이 : monkey",
            "고양이 : cat",
            "개 : dog",
            "고릴라 : gorilla",
            "고슴도치 : hedgehog",
            "돼지 : pig",
            "멧돼지 : boar",
            "늑대 : wolf",
            "여우 : fox",
            "양 : sheep",
            "염소 : goat",
            "소 : cow",
            "들소 : buffalo, bison",
            "다람쥐 : squirrel",
            "줄무늬다람쥐 : chipmunk",
            "나무늘보 : sloth",
            "족제비 : weasel",
            "아르마딜로 : armadillo",
            "오소리 : badger",
            "오랑우탄 : orangutan",
            "미어캣 : meerkat",
            "몽구스 : mongoose",
            "노새 : mule",
            "당나귀 : donkey",
            "코뿔소 : rhinoceros",
            "토끼 : rabbit",
            "개구리 : frog",
            "두꺼비 : toad",
            "쥐 : rat",
            "생쥐 : mouse",
            "스컹크 : skunk",
            "박쥐 : bat",
            "거북이 : turtle",
            "카멜레온 : chameleon",
            "도마뱀 : lizard"
    };
cs

어댑터를 선언할때 String 형식의 데이터셋을 사용한다고 했으니 String 배열을 만들어 준다.


<single_row.xml>

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
 
    <TextView
        android:id="@+id/label"
        android:gravity="center"
        android:textSize="25dp"
        android:layout_margin="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
 
cs


어댑터 뷰를 만들기 위해서 새로운 레이아웃을 xml파일로 만들어서 정의한다. 쉽게 말해서 리스트 뷰에서 보여지는 내용 중 한 행에 대한 정의라고 보면 쉽다. 어댑터 뷰에서 정의해 놓은 TextView의 속성과 데이터를 합쳐서 사용할 것이다.


1
2
3
4
        mAdapter = new ArrayAdapter<String>(this, R.layout.single_row, R.id.label, mAnimals);
 
        ListView lv = (ListView) findViewById(R.id.list);
        lv.setAdapter(mAdapter);
cs


선언해 놓은 어댑터를 생성자를 이용하여 초기화를 시킨다. 생성자에 들어갈 파라미터를 순서대로 설명하자면

this가 들어간 곳은 Context 란이다. 적용될 리스트 뷰를 어떤 액티비티에서 사용할 것인지 인데, this를 입력하여 본 액티비티(MainActivity)에서 동작하게 한다.


두번째 파라미터, 보통 어댑터는 레이아웃 객체를 갖게 되는데, 어떤 레이아웃을 사용하는지 입력하면 된다.

세번째 파라미터, 레이아웃에서 사용하는 텍스트 뷰의 아이디를 입력하고,

마지막으로 사용할 data set을 파라미터로 전달한다.



다음과 같이 적용한 레이아웃과 뷰의 속성을 가지고 리스트뷰가 생성된것을 확인할 수 있다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함