[ 실행화면 ]
달리고 달려 벌써 6번째 강의까지 왔다.
이번엔 자주 사용되는 ListView를 아주 간단하게 알아보는걸로 시작~
1. 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<ListView
android:id="@+id/lv_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
이제 이 xml은 별로 어렵지 않다.
추가되거나 변경되는 부분이 해당 강의에서 배우는 부분밖에 없기 때문 ㅎㅎ
이번 xml에서도 ListView만 추가되었다.
2. MainActivity.java
package com.example.android_test;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView lv_id;
@Override
//onCreate -> 어플을 처음 실행했을때 실행됨
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_id = findViewById(R.id.lv_id);
List<String> data = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,data);
lv_id.setAdapter(adapter);
data.add("리스트뷰");
data.add("강의들으면서");
data.add("추가시키기");
//이 상태를 저장하겠다는 의미를 가진 notifyDataSetChanged() 해주기
adapter.notifyDataSetChanged();
}
}
여느때처럼 ListView 변수 선언해주고 findViewById로 변수에 id값 할당해주기!
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_id = findViewById(R.id.lv_id);
List<String> data = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,data);
lv_id.setAdapter(adapter);
data.add("리스트뷰");
data.add("강의들으면서");
data.add("추가시키기");
//이 상태를 저장하겠다는 의미를 가진 notifyDataSetChanged() 해주기
adapter.notifyDataSetChanged();
}
주목해야할 부분은 이 부분이다.
List<String>을 사용하여 data라는 이름의 리스트를 생성하자.
- List<String>: String 타입의 요소들을 담을 수 있는 리스트 정의
- new ArrayList<>(): ArrayList는 List 인터페이스를 구현하는 클래스 중 하나로, 가변 길이의 배열을 의미
- 결과: 빈 String 리스트인 data가 생성. 이 리스트에 데이터 추가 가능.
// 새로운 List<String> 생성
List<String> data = new ArrayList<>();
// 리스트에 요소 추가
data.add("첫번째 리스트 내용");
data..add("두번째 리스트 내용");
data..add("세번째 리스트 내용");
- ArrayAdapter<String>: String 타입의 데이터를 ListView에 연결하기 위한 어댑터를 정의
- 어댑터는 데이터를 ListView 같은 UI 컴포넌트에 바인딩하는 역할
- new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);:
- this: 현재 Activity 또는 Context를 가리킴. 어댑터가 UI 요소에 접근할 수 있도록 하기 위해 필요
- android.R.layout.simple_list_item_1: Android에서 제공하는 기본 레이아웃 리소스 중 하나로, 단순한 텍스트 항목을 리스트의 각 항목으로 사용하는 레이아웃.
- data: 위에서 생성한 List<String> 타입의 리스트. 어댑터는 이 리스트에 있는 데이터를 ListView에 표시
- 결과: data 리스트에 있는 데이터를 simple_list_item_1 레이아웃을 사용해 ListView에 표시할 수 있는 어댑터가 생성
- setAdapter(adapter): ListView에 위에서 생성한 ArrayAdapter를 설정
- 이 어댑터를 통해 ListView가 데이터를 표시하게 됨
- 결과: lv_id라는 ListView에 어댑터가 연결되어, data 리스트의 항목들이 ListView에 됨.
notifyDataSetChanged() : 현재 이 상태를 저장하겠다는 의미를 가짐 / data.add 후 저장하기
참고 강의는 아래에!
https://www.youtube.com/watch?v=snnqxAEf9rI&list=PLC51MBz7PMyyyR2l4gGBMFMMUfYmBkZxm&index=7
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오] + ActionBar에 Menu 추가하기 (1) | 2024.08.29 |
---|---|
[안드로이드 스튜디오] 앱만들기 #7. Navigation Drawer Activity (0) | 2024.08.29 |
[안드로이드 스튜디오] 앱만들기 #5 패키지구조 & 역할 (0) | 2024.08.27 |
[안드로이드 스튜디오] 앱만들기 #4. ImageView, Toast + gravity (0) | 2024.08.27 |
[안드로이드 스튜디오] 앱만들기 #3. Intent (화면 전환) (0) | 2024.08.26 |