선택위젯의 사용
어제까지는 베이직 위젯이었다.
지금은 복합적으로 가지고 있는 것들
Person{
int age;
String name;
}
이런걸 Compound 위젯 이라고 한다.
웬만한 위젯들을 다뤄본다. 리싸이클러 뷰..
Compound 위젯이 왜 필요한가 ?
String 이라는 데이터가 있다.
이걸 화면에 보여주는 게 View 이다.
이 데이터를 구성하는걸 Model이라고 한다.
모델,뷰 를 제어하는 것이 Control 이라고 하다.
MVC패턴을 얘기하는 것.
안드로이드에서 주로 사용하는 모델은 MVC.
여러가지 데이터객체를 이용하여 여러가지 복합 위젯으로 표현하는 것.
Compound 위젯은 가능하면 만드는게 좋지만, 한번만 보여줄거면, 구지 반드시는 아니다.
AppCompatActivity 뭐였지 ?.....
만드는 방법
액티비티에서 사용.
- create SampleListActivity
- create Data pakage
- create Person class
- private String name,int age,Drawable photo:
- 알트+insert 누르면 getter and setter 만들수 있다.
- getter setter 조건을 설정해줘야 한다. 나이 음수값 같은 거 처리 , 이미지 null값 처리
- 알트+insert는 생성자 만드는거
- 이제 Person 데이터를 가지는 뷰를 만들어야 한다.
- res - layout- new - layout resource
ex: view_, activity_, 이런식으로 네이밍 한다. 소문자로
view_person을 만든다.
- root element 에 Relaytivelayout을 한다.
- ImageView dimension에 크기를 정의하고 쓴다.
- id: image_photo
- textView id:text_name
- textView id:text_age
- 위젯이라는 별도 패키지를 만든다.
- name은 일반적으로 PersonView extends ViewGroup 이다. 그런데 마진이나, 그런거 때문에FrameLayout을 쓴다.
얘는 default 생성자가 없어서 알트+insert 해서 만들 수 있다.
- view를 생성하는 방법은 두가지
하나는 new 해서 생성하고 코드로 할때도 있고, xml로 inflate 해서 할때 도 있다.
- 생성자에 init()을 만들어서 생성자가 호출했을때 할 작업을 한다.
- LayoutInflater 객체를 가져와서 LayoutInflater.from(getContext())를 해서 레이아웃을 선언.
- inflater는 xml을 보고 xml에 맞는 객체를 생성하는 역할
- 이 객체에는 자기자신을 root를 ? inflater.inflate(R.layout.view_person,this);
여기서 this를 넣는 이유는 나자신을 포함한 차일드까지 그린다. this를 포함하지 않으면 차일드로 넣으라는 뜻이다.
- init()에 뷰들을 선언한다. 이미지뷰나 포토뷰
- public void setPerson(Person person),getPerson() 함수를 선언한다.
- getage할때, String 으로 바꿔야한다.
- drawable리소스를 만드는데 density가 xxhd인 drawable 리소스이다.
- 리소스에 있는 drawable을 갖고 오는 방법은 Drawable photo = ContextCompat.getDrawable(this,R.drawable.sample_0);
- Person 객체를 만든다.
'Android' 카테고리의 다른 글
[4일차]ListView - AdapterView,MultipleAdapter (0) | 2016.07.13 |
---|---|
[4일차]xml로 속성정의하기 (0) | 2016.07.13 |
[3일차] 프로그래스,시크,레이팅,데이트 (0) | 2016.07.12 |
[3일차]이미지 (0) | 2016.07.12 |
[3일차]EditText (0) | 2016.07.12 |