1. CustomListView란?
- 리스트뷰를 구성할 때 항목 하나의 모양을 개발자가 직접 만들어 사용할 수 있다.
- 항목 하나에 배치된 뷰 중 2개 이상의 뷰에 데이터를 셋팅 할 때는 SimpleAdaptor을 사용한다.
2. SimpleAdaptor
- 두 개 이상의 뷰에 데이터를 세팅할 경우에는 SimpleAdaptor을 사용한다.
- 심플어댑터 구조는
- 항목 하나를 구성할 객체들을 Hasmap 객체에 담는다.
- 그 Hashmap을 arraylist에 담는다.
- 그 arraylist를 어댑터에 세팅한다.
3. 어댑터 세팅 순서
- 리스트 항목 하나의 레이아웃을 만든다.
- ImageView에 들어갈 리소스를 drawable폴더에 넣는다.
- 안드로이드OS는 Drawable폴더에 있는 리소스를 사용할 때 리소스id(int형)를 사용한다.
- 리스트 항목에 들어갈 View들의 배열들을 만든다. (여기선 imgRes, data1, data2)
- 해쉬맵 어레이리스트를 만든다. ArrayList<HashMap><String, Any>>()
- 해쉬맵에 플래그, 데이터들을 넣는다.
- 리스트에 플래그, 데이터를 세팅한 해쉬맵을 넣어준다.
- 1. 해쉬맵 플래그 배열 / 2. 해쉬맵에 있는 데이터들이 들어갈 리스트뷰의 배열을 만든다.
- 어뎁터에 1. 리스트, 2. 레이아웃, 3. 해쉬맵 플래그 배열, 4. 리스트뷰 배열을 넣어준다.
// 안드로이드는 res폴더에 들어있는 리소스를 사용할 때 리소스 id라는 개념을 사용하게 된다. 즉, int형 자료.
// id, int형 배열.
var imgRes = intArrayOf(R.drawable.images, R.drawable.off)
var data1 = arrayOf("인어공주", "꿈속의 마니");
var data2 = arrayOf("mermaid", "mani");
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 심플 어댑터 구조
// 항목 하나를 구성할 개체들을 hashmap 객체에 담은 다음에 그걸 arraylist에 담고 어댑터에 세팅한다.
// any = 어떠한 값이나 다 넣을 수 있다. 위에 넣을 애들이 정수형or문자열이므로 Any을 넣고, 만약 통일되었을 경우 그 자료형을 넣으면 된다.
var list = ArrayList<HashMap<String, Any>>()
//2.데이터 담기
var idx = 0
while(idx < imgRes.size)
{
var map = HashMap<String, Any>()
map.put("flag", imgRes[idx]);
map.put("data1", data1[idx]);
map.put("data2", data2[idx]);
list.add(map)
idx++
}
//데이터 세팅
var keys = arrayOf("flag", "data1", "data2");
var ids = intArrayOf(R.id.imageView2, R.id.textView2, R.id.textView3);
var adaptor = SimpleAdapter(this, list, R.layout.row, keys, ids)
listview.adapter = adaptor
//리스너
listview.setOnItemClickListener { parent, view, position, id ->
textView.text = data1[position]
}
}
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - Spinner (0) | 2020.02.12 |
---|---|
안드로이드 - CustomAdapter (0) | 2020.02.12 |
안드로이드 - CustomListView (0) | 2020.02.10 |
안드로이드 - ListView (0) | 2020.02.10 |
안드로이드 - AdapterView (0) | 2020.02.10 |