[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

113
Android - Day 2 안드로이드에게 메세지 보내기 (Intent ListView, Adapter)
  • date post

    20-Oct-2014
  • Category

    Technology

  • view

    2.394
  • download

    17

description

Written By 정문철 (NHN NEXT 1기) Reviewed By 손영수 인텐트, 리스트뷰, 어댑터

Transcript of [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Page 1: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Android����������� ������������������  -����������� ������������������  Day����������� ������������������  2����������� ������������������  ����������� ������������������  안드로이드에게����������� ������������������  메세지����������� ������������������  보내기����������� ������������������  

(Intent����������� ������������������  ����������� ������������������  ListView,����������� ������������������  Adapter)

Page 2: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

학습목표이 학습을 마치면…-Intent를 사용해 다른 Activity로 전환을 할 수 있습니다. !-android.R.layout.simple_list_item_1 을 사용하여 한줄이 표시되는 리스트뷰를 만들 수 있습니다. !-android.R.layout.simple_list_item_2 을 사용하여 두줄이 표시되는 리스트뷰를 만들 수 있습니다. !-ArrayAdapter를 직접 만들어 자신이 원하는 레이아웃을 가지는 리스트뷰를 만들 수 있습니다.

Page 3: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Main SimpleList1

앱 시작시 실행되는 Activity

리스트에 글을 한줄씩 출력하는 리스트뷰 실습

SimpleList2

리스트에 글을 두줄씩 출력하는 리스트뷰 실습

CustomList

리스트뷰의 레이아웃을 직접 구현하는 실습

rowLayout

Intent를 사용하며 Activity이동

구현할 앱의 구조

Page 4: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
Page 5: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

-프로젝트, 레이아웃 만들기-

Page 6: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

메인 레이아웃을 생성해야 합니다.

Page 7: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

빈 프로젝트를 하나 생성해 주세요 (이름은 자유!)

Page 8: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

메인 레이아웃을 편집해서

Page 9: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

TextView하나와 Button3개를 만듭니다. (Linear, Relative Layout은 상관 없이 편한대로!)

Page 10: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

속성에서 ID와 Text를 사람이 알기 쉽게 변경합니다. 이 예제에서는 simple_list1, simple_list2, custom_list로 하였습니다.

!(id의 변경은 레이아웃 에디터에서 변경하시길 권장합니다.)

Page 11: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

완성된 레이아웃

id: main_button_simple_list1id: main_button_simple_list2id: main_button_custom_list

Page 12: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

한줄 리스트를 표시해줄 레이아웃과 액티비티 클래스를

만들어야 합니다.

Page 13: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

작업중인 패키지명을 마우스 오른쪽 클릭을 한 후 New-Other를 선택해줍니다.

Page 14: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Android에 Android Activity항목을 선택한 후 계속 진행합니다.

Page 15: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Activity Name으로 SimpleList1Activity를 적습니다.

Page 16: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

클래스 파일과 레이아웃 파일이 동시에 생성되었습니다.

Page 17: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

xml편집창으로 이동합니다.

x

Page 18: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

내용을 다 삭제합니다.

Page 19: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

내용이 없는 상태에서

Page 20: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

x

LinearLayout(옵션)과

Page 21: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

x

ListView를 배치합니다.

Page 22: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ListView의 id는 simple_list1_listView로 하였습니다. (각자 구분가능하도록 자유롭게)

x x

Page 23: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Main SimpleList1

앱 시작시 실행되는 Activity

리스트에 글을 한줄씩 출력하는 리스트뷰 실습

SimpleList2

리스트에 글을 두줄씩 출력하는 리스트뷰 실습

CustomList

리스트뷰의 레이아웃을 직접 구현하는 실습

SimpleList1과 같은 Activity가 2개 더 필요합니다.

Page 24: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

동일한 방법을 이용해서 SimpleList2Activity,

CustomListActivity를 생성해야합니다.

Page 25: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

SimpleList2Activity와…

Page 26: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

CustomListActivity

Page 27: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

레이아웃도 동일하게 ListView를 가지고 있게 하고 각 레이아웃을 구분할 수 있는 Id값을 가지고 있게 합니다.

ex)simple_list1_listView, simple_list2_listView, custom_list_listView

Page 28: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이제 메인의 버튼을 누르면 다른 Activity로 이동할 수 있게 해야합니다.

Page 29: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이제 MainActivity를 열어줍니다.

Page 30: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

onCreateOptionsMenu는 이번 예제에서 사용하지 않으므로 삭제를 하였습니다.(선택사항)

Page 31: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Button위젯을 실습했을때 처럼 OnClickListener를 받고 onClick을 만들어줍니다.

Page 32: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Button을 생성하고 OnClickListener도 연결해줍니다.

Page 33: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

OnClick에 switch를 Id값으로 사용해 이벤트를 판별합니다.

Page 34: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Intent

안드로이드에서는 액티비티 간의 화면 전환에 인텐트(Intent)를 사용합니다.

!단순히 화면 전환을 의미하지는 않으나

이 예제에서는 다른 액티비티를 호출하고 호출 될 액티비티에 간단한 값을 전달하는 방법을 알아봅니다.

Page 35: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Intent intent = new Intent(this, 이동할액티비티.class); startActivity(intent);

간단히 화면 전환을 위해서는 Intent를 생성하고 생성자로 현재 액티비티의 컨텍스트와

(컨텍스트에 대한 설명은 안드로이드 베이직에서 합니다.)

이동할 액티비티 클래스의 객체를 써주고 !

startActivity(intent)를 해주면 됩니다.

Page 36: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

인텐트(Intent)로 다른 액티비티를 호출할 때 putExtra(key, value);형식으로 데이터를 같이 전송 할 수 있습니다.

MainActivity

Page 37: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

호출된 액티비티에서 데이터를 받을 때에는 getIntent().getExtras().getString(“키값”);으로 합니다. 꼭 String이 아니라 Int나 다른 자료형도 가능하나

!객체를 보낼때에는 package라는 것을 사용하지만

이 예제에서는 다루지 않습니다.

Activity2

MainActivity

Page 38: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이제 다시 프로젝트로 돌아와서…

Page 39: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Intent startActivity()

하고 싶은 내용

Page 40: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

onClick안의 switch안에 Intent를 만들고 이동할 액티비티 클래스 (SimpleList1Activity.class)를 넣고 startActivity()를 합니다.

Page 41: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

나머지 버튼에도 동일하게 Intent를 넣어줍니다.

Page 42: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
Page 43: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

화면 전환은 잘 되었지만 리스트뷰에 아무 내용도 없어 빈 화면으로 표시됩니다.

!이제 리스트뷰에 내용을 넣어보겠습니다.

Page 44: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

SimpleList1에서는 리스트에 한줄짜리 글이 들어가는 리스트를 만들어 봅니다.

Page 45: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

SimpleList1Activity를 편집합니다. !

Main때와 마찬가지로 onCreateOptionsMenu를 지우고 싶으신 분은 지우셔도 무방합니다.

Page 46: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ListView를 생성을 해 줍니다.

Page 47: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

리스트에 넣을 데이터를 ArrayList로 관리 할 예정입니다. ArrayList<String>을 생성합니다.

Page 48: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

add()를 사용해서 ArrayList에 임의의 값을 넣어줍니다. !

(시간에 여유가 있으시면 앞에서 Intent를 배울때 사용한 putExtra()와 getExtra()를 사용하여

데이터를 받아보시는 연습을 해보시는건 어떤가요? ^^;)

Page 49: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Adapter

Page 50: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

위젯은 단순히 화면을 출력하기 위한 일종의 껍데기인데 Adapter가 데이터를 각 위젯에 맞는 형태로 제어를 해준다.

!(위젯과 데이터를 연결해주는 징검다리 역할)

Page 51: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

-ArrayList -UI레이아웃

2 3

4 5 6

7 8 9

1

1234…

1 2 3 4 …

ListView

Gallery

GridView

AdapterArrayList

하나의 요소 UI를 구성할 레이아웃 파일

제대로 된 안드로이드 앱 개발을 위한 안드로이드 프로그래밍 / 진성주 최종렬 백정현 신중훈 공저

Adapter의 개념

사진 이름 주소

Page 52: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Simple1 실습에서는 리스트에 데이터를 보여주기 위한 어뎁터로 ArrayAdapter를 사용합니다.

!ArrayAdapter에 UI레이아웃과 데이터를 넣어주고

setAdapter()로 ListView에 Adapter를 적용시키는데 !

UI레이아웃을 안드로이드에서 기본 제공하는 simple_list_item_1을 사용하여 하나의 텍스트뷰가 있는 한줄짜리 레이아웃으로 표시합니다.

Page 53: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

데이터가 리스트뷰에 맞게 잘 출력되었습니다^^

참고로 simple_list_item_1은 단순히 TextView가 하나있는 레이아웃xml파일입니다.

Page 54: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이번에는 SimpleList2에서 리스트에 두줄이 표시되는 Adapter를

적용해 보겠습니다.

Page 55: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

SimpleList2Activity도 1에서 하던 것과 마찬가지로 ListView를 생성합니다.

Page 56: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

String형태로 key와 value를 가지는 HashMap을 가지고 있는 ArrayList (?!)가 필요합니다.

Page 57: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

값을 넣어줄 때에는 HashMap을 생성해서 먼저 HashMap에 값을 put()으로 넣어준 후

ArrayList에 HashMap을 넣어줍니다. !

HashMap의 키캆은 여기서는 임의로 line1과 line2로 설정하였습니다. line1을 키값으로 가지는곳에 첫번째 줄에 올 데이터를,

2에는 두번째 줄에 올 데이터를 넣을 예정입니다.

Page 58: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

2줄짜리 simpleList를 사용하기 위해서는 String 배열과 int 배열이 필요합니다.

!String 배열에는 데이터를 가져올때 사용할 HashMap의 키값을 int배열에는 android.R.layout.simple_list_item_2에서 사용할

TextView위젯의 id값이 필요합니다. (고정된 id)

Page 59: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

SimpleAdapter를 생성하고 데이터 리스트(hashMapList1)와 UI레이아웃(android.R.layout.simple_list_item_2), 그리고 아까 설정한 배열값 (from, to)를 넣어주고

ListView에 어뎁터를 연결해 줍니다.

Page 60: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

데이터가 리스트뷰에 맞게 잘 출력되었습니다^^

참고로 simple_list_item_2은 TextView가 두개있는 레이아웃xml파일입니다.

Page 61: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

나는 저런 두줄 형태가 아니라 사진을 넣거나 다른 형태의 리스트를 만들고 싶은데?

Page 62: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이제 나만의 리스트뷰(어뎁터)를 만들어 봅시다.

Page 63: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

사진과 텍스트가 같이 있는 리스트 만들기

Page 64: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

사진과 텍스트가 같이 있는 리스트를 만들기 위해서는 어댑터를 직접 만들어야 합니다.

Page 65: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

-ArrayList -UI레이아웃

2 3

4 5 6

7 8 9

1

1234…

1 2 3 4 …

ListView

Gallery

GridView

AdapterArrayList

하나의 요소 UI를 구성할 레이아웃 파일

제대로 된 안드로이드 앱 개발을 위한 안드로이드 프로그래밍 / 진성주 최종렬 백정현 신중훈 공저

Adapter의 개념

Page 66: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

-ArrayList -UI레이아웃

2 3

4 5 6

7 8 9

1

1234…

1 2 3 4 …

ListView

Gallery

GridView

AdapterArrayList

하나의 요소 UI를 구성할 레이아웃 파일

제대로 된 안드로이드 앱 개발을 위한 안드로이드 프로그래밍 / 진성주 최종렬 백정현 신중훈 공저

Adapter의 개념

먼저 UI레이아웃을 만들어 보겠습니다.

Page 67: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

TextView(Large, Blue)

TextView(Small, Gray)

ImageView

Page 68: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

프로젝트의 res-layout항목을 마우스 오른쪽 버튼으로 클릭하여 New-Android XML File을 선택합니다.

Page 69: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이름을 custom_list_row (임의로) LinearLayout을 선택합니다.

Page 70: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

TextView(Large, Blue)

TextView(Small, Gray)

ImageView

Page 71: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

레이아웃은 하나의 리스트안의 레이아웃만을 생각하며 작성하셔야 합니다.

Page 72: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이미지뷰 하나와 텍스트뷰 2개를 만들었습니다. (id는 식별하기 좋게 바꿔 주세요)

Page 73: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

-ArrayList -UI레이아웃

2 3

4 5 6

7 8 9

1

1234…

1 2 3 4 …

ListView

Gallery

GridView

AdapterArrayList

하나의 요소 UI를 구성할 레이아웃 파일

제대로 된 안드로이드 앱 개발을 위한 안드로이드 프로그래밍 / 진성주 최종렬 백정현 신중훈 공저

Adapter의 개념

UI레이아웃은 만들었고 이번에는

데이터를 만들어야 합니다.

Page 74: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ArrayList형태로 어댑터에 데이터를 넣어야 하는데 리스트에 표현을 할 데이터가 많으므로

객체로 감싸주겠습니다.

Page 75: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

새 클래스를 만들어 줍니다.

Page 76: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이 예제에서는 ListData라는 클래스를 만들었습니다.

Page 77: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

빈 클래스가 만들어졌습니다.

Page 78: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

사진의 이름(경로)과 TextView에 들어갈 텍스트 내용을2개를 보관할 지역변수를 만들고 생성자를 만들었습니다.

Page 79: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이 예제에서는 데이터를 변경하는 경우가 없어 set함수는 없이 get함수들만을 만들었습니다.

Page 80: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

-ArrayList -UI레이아웃

2 3

4 5 6

7 8 9

1

1234…

1 2 3 4 …

ListView

Gallery

GridView

AdapterArrayList

하나의 요소 UI를 구성할 레이아웃 파일

제대로 된 안드로이드 앱 개발을 위한 안드로이드 프로그래밍 / 진성주 최종렬 백정현 신중훈 공저

Adapter의 개념

UI레이아웃과 데이터를 만들었고

!이번에야말로

Adapter를 만들어야 합니다.

Page 81: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

어댑터를 만들 클래스를 만들어줘야 합니다.

Page 82: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이 예제에서는 클래스 명을 CustomAdapter로 정했습니다.

Page 83: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

아무것도 없는 클래스가 새로 생겼습니다.

Page 84: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

아까 만든 ListData를 가지는 ArrayAdapter를 상속받고 생성자에 Context, UI레이아웃의 id, 그리고 ArrayList데이터를 받습니다.

Page 85: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ArrayAdapter에서 중요한 부분인 어떻게 보여주것인지에 대한 부분은 getView()에 있습니다.

직접 만든 UI레이아웃에 맞게 고치기 위해 getView()를 오버라이딩 하여 수정을 해야합니다.

Page 86: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

inflate라는 것은 xml로 정의되어 있는 뷰나 레이아웃을 객체화 시키기 위해서 사용하는 메서드 인데 이 예제에서 간단히 설명을 하자면

-리스트에 보여줄 항목이 있는데 이 항목의 레이아웃을 전에 만든 custom_list_row.xml을 불러와서 사용하는 장면입니다.

Page 87: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

inflate로 만든 row로부터 텍스트뷰를 인스턴스로 만들어 글씨를 집어 넣습니다. 평소와 달리 row.findViewById()로 row.을 붙여

row의 텍스트뷰를 가져오도록 합니다.

Page 88: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ImageView도 전과 같은 방식으로 인스턴스를 만들고

Page 89: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이 예제에서는 getAssets()을 이용하여 assets이라는 곳에서 이미지 데이터를 가져와 표현하는 방법을 사용합니다.

!안드로이드에서의 assets이라는 공간은 데이터 형식에 상관없이

자유롭게 데이터를 불러 올 공간으로 사용됩니다.

Page 90: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

assets폴더에는 리스트뷰에서 보여줄 용도로 ListData객체에 정해준 파일들을 복사해 주세요

Page 91: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이제 다시 CustomListActivity로 돌아와 CustomAdapter를 적용해 보겠습니다.

Page 92: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

CustomAdapter에 값을 집어 넣기 위해서는 ListData를 가지는 ArrayList가 필요합니다.

Page 93: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ArrayList에 ListData를 수동으로 집어 넣어 보았습니다.

Page 94: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

findViewById()를 사용하여 ListView를 가져오고

Page 95: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

CustomAdapter를 생성하고 context와 UI레이아웃, ListData를 가지고 있는 ArrayList 데이터를 전달합니다.

Page 96: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

마지막으로 simpleList를 할 때와 마찬가지로 setAdapter()를 사용하여 리스트에 Adapter를 적용합니다.

Page 97: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

레이아웃에 맞게 사진 크기를 조절하거나

!메모리를 관리하는 부분이 없어

기종에 따라 화면이보기 흉하게 되거나 OutOfMemory가 발생하는 경우가

있습니다. !

이럴때에는 레이아웃 파일을 수정을하여 자신의 기종에 맞는 설정을 하거나

!메모리 부족이 발생할 때에는 이미지를 축소해서 사용해 주세요

Page 98: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

리스트로 부터 이벤트 받기

Page 99: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

단순히 리스트 형태로 데이터를 보여주는 것이 아니라

!리스트를 터치하면

이벤트를 받아 어떤 동작을 실행 시킬수 있도록 합니다.

Page 100: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

버튼을 사용했을때 OnClickListener를 사용하던 것 처럼 implements OnItemClickListener를 받아 옵니다.

Page 101: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

ListView에 setOnItemClickListener(this);로 리스너를 달아 줍니다.

Page 102: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

OnItemClick을 재정의를 해줘야합니다. (인자의 이름은 알기 쉽게 adapterView, view, position과 id로 변경했습니다.)

Page 103: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

position(int arg2)이 리스트의 번호를 의미합니다. 이 position으로 ArrayList로부터

데이터를 가져와서 사용 할 수도 있습니다.

Page 104: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

이번 개발 경험 프로젝트에서 만들어야 할 서비스

NEXTAGRAM

Page 105: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

다음주 수업 전까지 레이아웃과 Intent를 사용해

액티비티간의 이동은 구현이 되어 있어야 합니다.

Page 106: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

스토리보드

Page 107: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

메인화면

글 쓰기

글 읽기

Page 108: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

TextView(Large, Blue)TextView(Small, Gray)

ImageView

Button

리스트를 터치하면 해당 글의 상세 글 보기화면으로 이동하여야 함

Write를 터치하면 글 쓰기 화면으로 이동하여야 함

-메인 리스트 화면-

Page 109: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

TextView 글 제목TextView 글 내용

ImageView

TextView 작성 일자TextView 작성자

-글 읽기 화면-

Page 110: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

EditText 글 제목 입력EditText 글 내용 입력

ImageButton 터치를 하면 앨범에서 사진 선택(추후 구현)

Button 글 쓰기(추후 구현)

EditText 작성자 입력

Page 111: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

Layout파일 4개가 생성이 되어 있어야 합니다. *메인화면, *커스텀 어댑터용 UI 레이아웃,

*게시글 열람 화면, *게시글 작성 화면

Page 112: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

메인화면

글 쓰기

글 읽기

메인의 리스트를 터치하면 글 읽기 화면으로,

!Write버튼을 누르면 글 쓰기 화면으로 이동하는 Intent구현도 필요합니다.

Page 113: [NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)

COMMING SOON