[Android] ListView 데이터 추가, 삭제

Jbro·2023년 9월 8일
0

Android 기초

목록 보기
22/23
post-thumbnail

Android의 ListView에서 데이터를 추가하거나 삭제하려면
ListView의 Adapter에 전달된 데이터를 갱신하고
Adapter에 갱신되었다는 것을 전달해주면 된다.


ListView 데이터 갱신 예제 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" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="항목개수 : 0개"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

MainActivity 코드

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    // 데이터가 없는 리스트를 만든다.
    val rowList = mutableListOf<String>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)


        activityMainBinding.run{

            listView.run{
                adapter = ArrayAdapter<String>(
                    this@MainActivity, android.R.layout.simple_list_item_1, rowList
                )
            }

            button.run{
                setOnClickListener {
                    // Aapter를 구성하기 위해 사용한 list에 데이터를 추가한다.
                    val str1 = "row : ${System.currentTimeMillis()}"
                    rowList.add(str1)

                    textView.text = "항목 개수 : ${rowList.size}개"

                    // ListView의 adapter를 통해 갱신을 요청한다.
                    val adapter = listView.adapter as ArrayAdapter<String>
                    adapter.notifyDataSetChanged()
                }
            }

            button2.run{
                setOnClickListener {
                    // 제일 마지막 값을 제거한다.
                    rowList.removeLast()

                    textView.text = "항목 개수 : ${rowList.size}개"

                    val adapter = listView.adapter as ArrayAdapter<String>
                    adapter.notifyDataSetChanged()
                }
            }
        }
    }
}
profile
안드로이드 개발자 꿈나무

0개의 댓글