Deperecated/Android_강의

안드로이드 - CustomListView2

누알라리 2020. 2. 10. 23:40
1. CustomListView란?

- 리스트뷰를 구성할 때 항목 하나의 모양을 개발자가 직접 만들어 사용할 수 있다.

- 항목 하나에 배치된 뷰 중 2개 이상의 뷰에 데이터를 셋팅 할 때는 SimpleAdaptor을 사용한다.

 

리스트뷰.
리스트 항목 예시

2. SimpleAdaptor

- 두 개 이상의 뷰에 데이터를 세팅할 경우에는 SimpleAdaptor을 사용한다.

- 심플어댑터 구조는

  1. 항목 하나를 구성할 객체들을 Hasmap 객체에 담는다.
  2. 그 Hashmap을 arraylist에 담는다.
  3. 그 arraylist를 어댑터에 세팅한다.
3. 어댑터 세팅 순서
  1. 리스트 항목 하나의 레이아웃을 만든다.
  2. ImageView에 들어갈 리소스를 drawable폴더에 넣는다.
  3. 안드로이드OS는 Drawable폴더에 있는 리소스를 사용할 때 리소스id(int형)를 사용한다.
  4. 리스트 항목에 들어갈 View들의 배열들을 만든다. (여기선 imgRes, data1, data2)
  5. 해쉬맵 어레이리스트를 만든다. ArrayList<HashMap><String, Any>>()
  6. 해쉬맵에 플래그, 데이터들을 넣는다.
  7. 리스트에 플래그, 데이터를 세팅한 해쉬맵을 넣어준다.
  8. 1. 해쉬맵 플래그 배열 / 2. 해쉬맵에 있는 데이터들이 들어갈 리스트뷰의 배열을 만든다.
  9. 어뎁터에 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