1 / 67

만들면서 배우는 Android 세미나

만들면서 배우는 Android 세미나. 2 . SPARCS 11 KAIST 11 최낙현 ( bbashong ). 오늘도 . AVD 를 미리 켜두자 새로운 프로젝트를 만들자. 오늘의 목표. 이상형 리스트 만들기. 시작은 layout 부터. MainActivity.java. WHAT ARE WE DOING?. ArrayList 가 뭔가요 ? java 기본 library 에 포함되어있다 .

sal
Download Presentation

만들면서 배우는 Android 세미나

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 만들면서 배우는 Android 세미나 2. SPARCS 11 KAIST 11 최낙현(bbashong)

  2. 오늘도.. • AVD를 미리 켜두자 • 새로운 프로젝트를 만들자

  3. 오늘의 목표 • 이상형 리스트 만들기

  4. 시작은 layout부터

  5. MainActivity.java

  6. WHAT ARE WE DOING? • ArrayList가 뭔가요? • java 기본 library에 포함되어있다. • 객체를 담을 수 있는 Array인데 크기가 고정되어 있지 않아 맘대로 넣었다 뺐다 할 수 있는 array이다. • ListView가 뭔가요? • View들을 스크롤 할 수 있는 리스트로 나타내 주는 “ViewGroup”이다. 하나의 안드로이드 앱 대부분을 ListView가 차지한다. 못믿겠으면 페이스북앱,gmail앱, 카카오톡 뭐든 열어보라. • Adapter가 뭔가요? • data와 listview를 연결해 주는 매개체 이다. • listview의 한줄 한줄에 해당하는 View도 만들어서 넘겨준다. • ArrayAdapter는 Array에서 data를 얻어 ListView에게 넘겨준다.

  7. WHAT ARE WE DOING? • Adapter의 constructer가 parameter로 Context context를 받던데 context가 뭔가요? • Application, Activity, 이 두가지는 context를 상속한다.(즉 Activity는 context이다.) • View가 activity의 lifecycle과 잘 동기 되려면 context의 정보가 필요하기 때문에 parameter 로 받는다. • 그래서 this를 넣어주었다.(this-> MainActivity객체 ->Activity 객체 ->Context 객체)

  8. WHAT ARE WE DOING? • android.R.layout.simple_list_item1 이게뭐죠? • 우리가 id나 layout을 찾는데 R.blah.blahblah를 이용했었다. • android.R.???은 android에 기본적으로 내장되어 있는 layout과 id이다. • 즉 android에 기본적으로 내장된 layout을 listview의 한 row로 쓰고싶어서 이렇게 한 것이다. • setAdapter는 당신이 생각하는 바로 그거

  9. Question • Activity 코드안에 data를 삽입하는 코드가 (items.add) 껴있으니 보기도 안좋고 쓸데없이 지저분하고 코드도 길어지고 영 별로네요 • Singleton 객체를 만든뒤 그 객체의 member변수로 선언하자. • 또는 android 의 resource라는 기능을 이용하자. • 자세한 설명은 생략한다. 궁금하면 찾아보길

  10. Question • 이름만 가지고는 이상형을 판별할 수 없어요!!!listview에 키, 몸무게, 연봉도 넣고싶습니다! • Custom Adapter가 필요하다. • 커.스.텀.어.댑.터??? • 기본적으로 제공되는 adapter는 listview의 한 row로 1개의 textview밖에 이용하지 못한다. • ArrayAdapter를 상속하는 Custom Adapter로 listview의 row를 더 기능성있게 바꿔보자.

  11. 작업설명 • 1. 일단 이상형 정보를 담을 class IdealGirl (또는 IdealBoy) 를 만든다. • IdealGirl이 들어있는 array와 listview를 연결해 줄 IdealArrayAdapter를 만든다.

  12. IdealGirl만들기 • 알려주는 eclipse사용법을 숙지하세요!

  13. new class package 우클릭 ->new -> class

  14. Name만 적은뒤 finish

  15. 손으로 칠건 이 것 밖에없음.

  16. 우클릭 ->source -> Generate…

  17. 모두 체크하고 ok

  18. 우클릭 ->source -> Generate Getter and Setter 모두 체크하고 ok

  19. 순식간에 constructor와 getter, setter 완성

  20. Custom Array Adapter를 만들기 전에.. • listview의 row 를 나타낼 layout 부터 만들자.

  21. layout 우클릭 ->new -> androidXmlFile

  22. file명과 root element를 지정해주고 finish

  23. Typing Time • 다음과 같이 작성하자 • text 속성은 사실 필요 없지만, 잘 배치됬는지 확인하기위해서 삽입됨.

  24. Custom Adapter를 만들자. • 따라하세요

  25. new class, Name과 superclass 설정 저기서도 자동완성 가능!

  26. 여기까지만 적고

  27. 우클릭->source->override/implement method getView선택한 뒤 ok

  28. getView함수 작성

  29. MainActivity.java수정 맨끝에 빨간 밑줄은 무시

  30. 실행화면

  31. what are we doing - IdealAdapter.java • super(context, 0, list);에서 0은 뭔가요? • 두번째 parameter는 row로 사용할 layout을 의미하는데, 우린 getView함수에서 layout을 지정하기때문에 그냥 0으로 지정했다. • getView함수가 뭔가요? • listview가 각각의 position 에 해당하는 row의 view를 만들 때, 이 getView함수를 통해 view를 얻어간다. • 따라서 우리가 이 함수를 override해주면 우리가 원하는 view가 해당 position 의 row로 들어간다.

  32. what are we doing - IdealAdapter.java • inflator가 뭔가요? • layout에서 view객체를 만드는 과정을 inflate라고 설명한 적이 있다. • inflate를 해주는 객체가 inflator이다. • singleton이기 때문에 constructor가 아닌 LayoutInflater.from(context)를 통해 객체를 얻는다. • singleton이 뭔지 모르면 일단 무시하자.

  33. what are we doing - IdealAdapter.java • convertView가 뭔가요? • 길이가 100인 listview가 있다고 해보자. • 그럼 100개의 view가 필요할까? • 100개의 view를 만들면 성능이 어떻게 될까? • 실제로 필요한 view는 화면에 보이는 10여개이다.

  34. view의 재사용

  35. view의 재사용 • 화면 밖으로 벗어난 view는 recycler로 들어간다. • 그리고 새로운 view를 만들어야 해서 getView함수를 호출할 때,parameter로 recycler에 있는 view 를 넣어준다. (없으면 null) • 이 view를 convertview라고 한다. • 따라서 우리는 convert view가 null이 아니면, 새로운 view를 inflate할 필요 없이,view의 내용물만 바꿔주면 되는 것 이다.

  36. Question • convertview를 이용해서 view를 재사용 하는건 좋다. 그런데, 같은 view를 이용하면서 매번 findViewById로 view들을 찾는 것도 낭비 아닌가? • ViewHolder 패턴을 이용하자.

  37. What are we doing? • ViewHolder패턴이 뭔가요? • view를 멤버 변수로 가지는 객체를 만든다.(이름은 뭐든 상관 없음.) • row_view를 만들 때 마다,row_view에서 findViewById를 통해 얻은 view들을 ViewHolder객체에 멤버변수로 저장시킨다. • 나중에 convertview로 이 view가 돌아왔을 때, 다시 findviewbyId를 하여 리소스를 낭비하지 않고, 바로 원하는 view들을 얻을 수 있다.

  38. ListView에 동적으로 item 넣고 빼기 • 자 이제 listview에 item을 동적으로 넣고 빼는 방법을 배워보자. • 그전에 Intent에 대해 알아보자.

  39. Intent • 말 그대로 “의도” • explicit intent와 implicit intent로 나뉜다. • implicit intent는 각자 공부하고 지금부터 intent라고 하면 전부 explicit intent를 의미한다고 생각하자. • http://www.vogella.com/articles/AndroidIntent/article.html

  40. ListView에 동적으로 item 넣고 빼기 • 과정 • 1. 새로운 activity 만들기 (AddIdealActivity.java) • 2. 새로운 activity를 위한 layout 만들기 • 3. 새로운 activity에서 MainActivity로 데이터를 보내는 함수 만들기 • 4.MainActivity.java에서 AddIdealActivity를 호출하고 결과가 왔을때 listview에 추가하는 함수 만들기

  41. add_format.xml(new xml)

  42. add_format.xml(new xml) 실수로 Button에 ID를 안줬으니 “@+id/done”으로 주자

  43. Wait • imeOption=“actionNext”가 뭔가요? • 그냥 엔터치면 다음칸으로 넘어가라는거에요.. • actionDone은요? • 끝났으니까 키보드 닫으라는거에요..

  44. AndroidManifest.xml • 프로젝트 를 잘 뒤져보면 AndroidManifest.xml이라는게 있어요 • application 의 설정, 정보를 담고있음 • 새로운 Activity를 만들려면 여기에 꼭 추가를 해줘야함.

  45. application 부분에 새로운 activity 추가

More Related