ABOUT ME

Today
Yesterday
Total
  • [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()
                }
            }
        }
    }

     

     

     

    실행결과 >>>

     

     

     

     

     

     

    반응형

    댓글

Designed by Tistory.