앱 만들기/안드로이드

안드로이드 리스트 뷰 구현하기

나도 처음이야 2021. 4. 15.

한 화면 이상의 데이터를 보여주기 위해서는 스크롤 뷰를 사용할 수 있습니다.

하지만 스크롤 뷰는 한번에 모든 데이터를 로딩 하기에 전화번호 혹은 사진 첩과 같은 데이터를 그대로

자식 뷰로 설정하면 메모리 오버플로우가 발생할 수 있습니다. ( 스크롤 뷰 - 자식 뷰는 오직 하나만)

그렇기에 이럴때는 리스튜 뷰를 사용해야 합니다.

리스트 뷰는 화면에 보이는 데이터만 메모리에 로딩후 처리하기 때문에 안정적인 구현이 가능합니다.

 

이때 리스트뷰 와 전화번호부 등의 데이터를 연결해주는 역할을 하는 것이

바로 어답터 이다.

표식화 하자면 하기처럼 설명할 수 있다.

전화번호 데이터 <--- 어답터  ---> 리스트 뷰

가장 기본적인 텍스트 정보만 가지는 리스트뷰를 구현 해 보겠습니다.


 

1. 화면 구성.

  레이아웃에는 리스트 뷰 만 배치합니다. ( 참고로 리스트 뷰도 데이터가 많아짐에 따라 스크롤이 생성됩니다) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
cs

 

2. 데이터 만들기.

 가상의 폰 번호 100개를 만들어 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends AppCompatActivity {
 
    ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //데이터 준비
        ArrayList<String> phoneData = new ArrayList<>();
        for(int i=0; i < 100; i++){
            phoneData.add("010-111-111" + i);
        }
cs

String 형을 담을 수 있는 ArrayList 에 가상 폰번호 100개를 저장합니다.

리스트 뷰 실험을 위한 데이터를 완성했습니다.

 


3. 어댑터 만들기

안드로이드에서 기본으로 제공하는 기본 어댑터를 만듭니다.

텍스트만 나타낼 수 있는 기본 어댑터 타입입니다. ( 두번째 인자)

세번째 인자에는 데이터를 입력합니다.

1
2
3
   //안드로이드 제공 기본 어댑터 준비
        ArrayAdapter<String> adapter = 
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, phoneData);
cs

 

4. 뷰에 어답터 연결. 

1
2
3
      //뷰에 아답터 연결.
        listView = (ListView)findViewById(R.id.listView);
        listView.setAdapter(adapter);
cs

 

하기 처럼, 폰번호 데이터가

리스트 뷰로 잘 표현되는 것을 확인 할 수 있습니다.

 

 

하지만, 우리는 리스트 뷰를 구성할때 사진 및 추가 정보가 표시되기를 원합니다.

개발자가 직접구현하는 어탭터는 다음 포스팅에서

다루어 보겠습니다. 감사합니다.

반응형

댓글