Adapter View
- 개발자는 화면의 다양한 View 들을 배치하여 화면을 구성함
- 대ㅐ부분의 뷰들은 대치를 하면 기본적으로 정해진 속성에 따라 모양이 구성
- 하지만 일부 view 들은 스스로 결정할 수 없는 부분이 있어 개발자가 반드시 데이터를 설정해야만 구성이 가능하다
- 이렇게 개발자가 반드시 설정해야 화면을 구성할 수 있는 View 들을 Adapter View라고 한다.
Adapter Class
- Adapter View들은 View를 구성하기 위해서 개발자가 다양한 데이터를 설정 해 줘야한다 이러한 데이터를 관리하는 Class를 Adapter Class라고 부른다.
- Adapter class는 사용 목적이나 적용할 View레 따라 다양하게 제공되고 있으며 원한다면 직접 생성하여 사용할 수도 있다. 주로 다양한 항목을 제공하는 View를 구성할 때 사용한다.
-> 어댑터 클래스는 적용할 뷰에 따라서 여러 개일수도 있다.
- 어떤걸 보여줄지 몇개 보여줄지 어떻게 보여줄건지를 개발자가 어댑터 클래스를 가지고 만든 객체에 세팅하여 그 객체를 어댑터 뷰에 설정해 주면 그걸 가지고 화면을 구성해서 보여줌
List View
- 현재는 레거시 쪽으로 빠져있어서 현재는 더 다양한 기능을 가지고 있는 리사이클러 뷰 사용을 추천하고 있지만 구현하는게 복잡하기때문에 리스트뷰를 먼저 보고 지나감
- 리사이클러 뷰가 메모리 관리 등 관리의 효율성을 가지고 있지만 아직도 리스트뷰를 많이 사용하고 있음 -> 쉽기 때문에
- 리사이클러 뷰를 사용할 정도가 아니라면 리스트뷰를 사용해도 된다.
ListView 주요 메서드
- setAdapter : AdapterView 를 구성하기 위해 사용하는 adapter를 설정
package kr.co.listview;
import android.os.Bundle;
import android.widget.ArrayAdapter;
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 kr.co.listview.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
//리스트 뷰 구성을 위해 사용할 문자열 데이터
String [] data1 = {
"문자열1", "문자열2", "문자열3","문자열5",
"문자열6", "문자열7", "문자열8","문자열9", "문자열10",
"문자열11", "문자열12", "문자열13","문자열14", "문자열15",
"문자열16", "문자열17", "문자열18","문자열19", "문자열20",
"문자열21", "문자열22", "문자열23","문자열24", "문자열25",
};
//문자열 하나가 항목 하나를 구성하게 되기 때문에 25개의 List 가 들어감
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(activityMainBinding.getRoot());
//문자열 값을 세팅할 수 있는 ArrayAdapter
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data1);
// android.R.layout.simple_list_item_1 : 어떻게가 결정
// data1 : 몇개, 무엇을이 결정
//어댑터를 리스트뷰에 적용
activityMainBinding.listView.setAdapter(adapter1);
}
}

ListView의 주요 이벤트
- ItemClick : 항목을 터치하면 발생
package kr.co.listview;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
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 kr.co.listview.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
//리스트 뷰 구성을 위해 사용할 문자열 데이터
String [] data1 = {
"문자열1", "문자열2", "문자열3","문자열5",
"문자열6", "문자열7", "문자열8","문자열9", "문자열10",
"문자열11", "문자열12", "문자열13","문자열14", "문자열15",
"문자열16", "문자열17", "문자열18","문자열19", "문자열20",
"문자열21", "문자열22", "문자열23","문자열24", "문자열25",
};
//문자열 하나가 항목 하나를 구성하게 되기 때문에 25개의 List 가 들어감
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(activityMainBinding.getRoot());
//문자열 값을 세팅할 수 있는 ArrayAdapter
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data1);
// android.R.layout.simple_list_item_1 : 어떻게가 결정
// data1 : 몇개, 무엇을이 결정
//어댑터를 리스트뷰에 적용
activityMainBinding.listView.setAdapter(adapter1);
//항목을 터치 했을 때
ListItemClickListener1 listItemClickListener1 = new ListItemClickListener1();
activityMainBinding.listView.setOnItemClickListener(listItemClickListener1);
}
//항목을 터치 했을 때
class ListItemClickListener1 implements AdapterView.OnItemClickListener{
// 첫 번째 : 이벤트가 발생한 어댑터 뷰
// 두 번째 : 터치한 항목 뷰
// 세 번째 : 터치한 항목의 순서값(0부터 1씩 증가) ** 가장 중요 **
// 네 번째 : 터치한 항목의 id 안드로이스 os가 자기가 분류해서 쓰기 떄문에 크게 의미 없긴 함...
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//사용자가 터치한 n번째 문자열을 가져옴
String st1 = data1[i];
activityMainBinding.textView.setText(st1);
}
}
}
'안드로이드 스튜디오' 카테고리의 다른 글
| [Android] CustomAdapter (0) | 2026.03.13 |
|---|---|
| [Android] Custom ListView (0) | 2026.03.02 |
| [Android] 라이브러리 버전 수정 방법 (0) | 2026.02.25 |
| [Android] ToggleButton (0) | 2026.02.02 |
| [Android] ImageView (1) | 2026.02.02 |