일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- OOAD
- DATABASE
- mysql
- ubuntu
- Kotlin
- MongoDB
- algorithm
- Express
- wireshark
- node.js
- Scheduling
- Network
- typeorm
- Crawling
- Android
- macos
- python
- linux
- sequelize
- OS
- postman
- React
- mongoose
- HTML
- docker
- TypeScript
- S3
- css
- AWS
- Util
- Today
- Total
Seongwon Lim
[Android] ListView 사용 방법 본문
서론
이번 글에서는 안드로이드 개발 시 많이 사용하는 Adapter, ListView의 개념과 사용하는 방법을 간단하게 살펴보고자 한다.
ListView?
ListView는 리스트 형태로 구성된 데이터를 보여주기 위한 위젯으로 AdapterView의 한 종류이다.
ListView는 텍스트 뿐만 아니라 사진, 버튼 등 다양한 위젯 등을 출력할 수 있으며 데이터가 많아 화면이 넘어가는 경우 스크롤(Scroll) 기능도 제공한다. 우리가 많이 사용하는 카카오톡 친구 목록, 채팅 목록 등과 같이 리스트 형태로 열거되어 있는 것들을 리스트 뷰 라고 생각하면 좋을 것 같다.
Adapter & AdapterView
Adapter는 데이터를 다양한 형식의 리스트로 보여주기 위해 사용하는 것으로, 데이터와 리스트 뷰 사이에 존재하는 객체이다.
- 쉽게 이해하면 데이터와 리스트 뷰를 연결시키기 위한 다리(Bridge) 역할을 한다고 생각할 수 있다.
- Adpater는 원본 데이터를 Adapter에 담고, AdatperView가 출력할 수 있는 형태로 데이터를 제공하는 역할을 한다.
그러면, AdapterView는 무엇일까?
AdapterView는 많은 데이터를 처리하기 위한 View로, View에 정보를 직접 넣는 것이 아니라 Adpater를 통해 받은 데이터를 화면에 보여주는 위젯이라고 생각할 수 있다.
- AdapterView 에는 ListView, GridView, Spinner, Gallery 등이 존재한다.
이번 예제에서는 AdapterView의 종류인 ListView, 그리고 데이터와 뷰를 연결하는 객체인 Adapter를 사용하여 예제를 구현하고자 한다.
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"
tools:context=".MainActivity">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
안드로이드 프로젝트를 처음 생성하면 디자인 쪽을 담당하는 activity_main.xml 파일이 생성된다.
해당 파일을 위와 같이 ListView 위젯을 추가한다.
MainActivity.java 파일 수정하기
public class MainActivity extends AppCompatActivity {
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.list); // 1
List<String> data = new ArrayList<>(); // 2
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); // 3
// 4
data.add("강아지");
data.add("고양이");
data.add("기린");
data.add("코끼리");
data.add("원숭이");
data.add("코알라");
data.add("호랑이");
data.add("사자");
list.setAdapter(adapter); // 5
adapter.notifyDataSetChanged();
}
}
- list 라는 이름으로 ListView 변수를 생성했다.
- 그리고 Adapter에 데이터를 담을 리스트 변수 data를 생성했다.
- 다음으로 데이터를 담을 어댑터를 만들기 위해 adapter 라는 ArrayAdapter<String> 타입의 어댑터를 생성했다.
- 어댑터에 담을 변수를 정의하기 위해 data라는 변수에 데이터를 추가했다.
- 위 예제와 같이 data.add(...) 를 통해서 데이터를 추가할 수 있다.
- 마지막으로 리스트 뷰와 어댑터를 연결한다.
3번에서 정의한 android.R.layout.simple_list_item_1는 리스트 뷰에 데이터를 보여줄 때 어떤 구조로 보여줄 지 정하는 부분으로, 안드로이드 스튜디오에서 미리 정의되어 제공하는 구조이다.
adapter.notifyDataSetChanged() 메서드는 어댑터 뷰의 데이터가 추가, 삭제 등으로 인해 변경이 감지되면 자동적으로 새로고침을 해주는 부분이다.
결과 확인하기
코드를 예제와 같이 구성 후 실행하면 위와 같은 결과를 얻을 수 있다.
데이터 양이 많아 화면을 넘어가는 경우 스크롤 기능이 자동적으로 추가되는 것도 확인할 수 있다.
'Android' 카테고리의 다른 글
[Kotlin] AlertDialog를 이용한 경고창(대화 상자) 띄우기 (0) | 2022.08.01 |
---|---|
[Kotlin] 인텐트(Intent)를 이용하여 데이터 전달하기 (0) | 2022.07.31 |
[Android] 코틀린(Kotlin) Intent를 이용하여 페이지 이동하기 (0) | 2022.07.29 |
[Android] 코틀린(Kotlin)에서 조건문&반복문 사용 방법 (0) | 2022.06.17 |
[Android] The minCompileSdk (31) specified in adependency's AAR metadata .. 에러 해결하기 (0) | 2022.06.04 |