-
[android] android 어뎁터 뷰app/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() } } } }
실행결과 >>>
반응형'app > android' 카테고리의 다른 글
[android] android 데이터 저장과 관리 (0) 2022.01.17 [android] android 커스텀 리스트뷰 (custom listView) (0) 2022.01.17 [android] android 액티비티와 인텐트 (0) 2022.01.13 [android] android 파일 처리 , 실습 간단 일기장 (0) 2022.01.13 [android] android 번외 로그인 페이지 만들기 (0) 2021.10.28