[android] android 어뎁터 뷰
어뎁터 뷰
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()
}
}
}
}
실행결과 >>>