app/android

[android] android 어뎁터 뷰

환테크 2022. 1. 13. 20:03
반응형

 

 

 

 

 

 

 

 

 

 

어뎁터 뷰

 

ListView, GridView, ExpandableListView, Spinner, Gallery 등을 묶어서 칭한다.

 

 

어댑터(Adapter)란?

 

Adapter는 하나의 Object(객체)로서, 보여지는 view와 그 view에 올릴 data를 연결하는 일종의 bridge이다

데이터의 원본을 받아 관리하고, 어댑터뷰가 출력할 수 있는 형태로 데이터를 제공하는 중각 객체 역할

 

 

 

 

리스트뷰(lsitView)

 

데이터를 리스트 모양으로 보여주고 그 중 하나를 선택하는 용도로 사용

 

 

 

 

(실습시간~~)xml을 이용해 리스트뷰 만들기

 

 

activity_main.xml

 

-> 리스트뷰를 만든것이 확인 가능!

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">



    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />



</LinearLayout>

 

 

 

MainActivity.kt

 

adapter1이란 객체를 만들어 생성된 배열에 악숀주기!

package com.cookandroid.exec11_1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        this.title = "리스트뷰테스트"

        var mid = arrayOf("히어로즈","24시","로스트","로스트름",
            "스몰빌","탐정몽크","빅뱅이론","프렌즈","덱스터","글리","가쉽걸","테이큰",
            "슈퍼내추럴","브이")
        var adapter1 = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mid)

        listView1.adapter = adapter1
        listView1.setOnItemClickListener { adapterView, view, i, l ->
            Toast.makeText(applicationContext, mid[i],Toast.LENGTH_LONG).show()
        }


    }
}

 

 

실행결과>>>

 

생선된 배열이 리스트뷰에 의해 리스트처럼 나열된 것이 확인 가능

생성된 리스트를 클릭하면 toast 메시지 뜨게 확인 해놓았당!!!!!~~~

 

 

 

 

 

<실습시간> 리스트뷰의 동적 추가, 삭제

 

 

 

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <EditText
        android:id="@+id/edtItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="드라마를 입력하세용"/>

    <Button
        android:id="@+id/btnAdd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="항목추가" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>

 

 

MainActivity.kt

 

package com.cookandroid.exec11_4

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        this.title = "리스트뷰 동적 추가 삭제"

        var mid = ArrayList<String>()

        var adapter1 = ArrayAdapter<String>(applicationContext, android.R.layout.simple_list_item_1, mid)
        listView1.adapter = adapter1

        btnAdd.setOnClickListener {
            mid.add(edtItem.text.toString())
            adapter1.notifyDataSetChanged()
        }

        listView1.setOnItemClickListener { adapterView, view, i, l ->
            mid.removeAt(i)
            adapter1.notifyDataSetChanged()
            false


        }
    }
}

 

 

 

실행결과 >>>

 

값을 입력하면 리스트에 값이 추가되는 것이 확인가능하당

 

 

 

 

 

 

스피너(spinner)

 

pc의 드롭다운 박스와 비슷한 기능

화면이 작은 스마트폰에서 여러 개 중 하나를 선택할 수 있도록 확장하는 용도

 

 

<실습시간> spinner  실습 해보기

 

 

 

activity_main.xml

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">



    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>

 

 

MainActivity.kt

 

 

package com.cookandroid.exec11_16

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        this.title="스피너 테스트"
        var movie = arrayOf("쿵푸팬더","짱구는 못말려","아저씨","아바타","대부")

        var sAdapter1 = ArrayAdapter<String>(applicationContext, android.R.layout.simple_spinner_item, movie)
        spinner1.adapter = sAdapter1

        spinner1.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(p0: AdapterView<*>?) {
               Toast.makeText(this@MainActivity, "아무것도 셀렉 안했어여", Toast.LENGTH_LONG).show()
            }

            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, position : Int, p3: Long) {
                Toast.makeText(this@MainActivity, movie[position], Toast.LENGTH_LONG).show()
            }
        }
    }
}

 

 

 

실행결과 >>>

 

 

 

 

 

 

반응형