리스트뷰(ListView)

- 여러개의 목록을 보여주는 위젯이다.


- 리스트뷰에 보여줄 데이터는 리스트뷰에 직접 입력하는 것이 아니라, adapter 객체에 담고, 그 adapter객체를 리스트뷰에 넣어줘야한다.


- adapter객체에 담을 데이터는 xml에서 불러올수도 있고 자바에서 넣어줄수도 있다.


ListView처럼 다량의 데이터를 처리하는 위젯은 어댑터라는 중간 객체에 의존하게 된다. 이유는 디자인에 불과한 ListView가 직접 데이터를 제어하게 되면, 유지보수성이 떨어지게 되기 때문이다.


- 안드로이드에서는 ListView처럼 다수의 데이터를 처리하는 위젯이 여러개 있다. 아래 4개 위젯 모두 데이터를 직접 제어하지 않고 어댑터 객체를 이용한다. 그래서 어댑터뷰라고 부른다.

(ListView,GridView, Spinner, Gallery(더 이상 사용x) )







●리스트뷰 예제1


- activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   

 xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="${relativePackage}.${activityClass}" >

    <ListView 

        android:id="@+id/lv"

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

    </ListView>

    

</RelativeLayout>




- MainActivity.java

package com.example.day0314;


import java.util.ArrayList;


import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;


public class MainActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//xml로 존재하는 데이터를 ListView에 적용

ListView lv = (ListView)findViewById(R.id.lv);

//어댑터 선언

//adapter의 자식 객체이며, 데이터가 List계역일때 사용하기 좋음

//xml에서 데이터 가져오기

ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this, R.array.number, android.R.layout.simple_list_item_1);

//자바코드내에서 List에 데이터를 담아 어댑터로 제어

ArrayList list = new ArrayList();

list.add("리스트1");

list.add("리스트2");

list.add("리스트3");

list.add("리스트4");

//android.R.layout.simple_list_item_1는 안드로이드에서 제공해주는 폼이다.

ArrayAdapter adapter2 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);

//android.R.layout.simple_list_item_1 대신 개발자가 만든 xml을 사용해도 된다.

ArrayAdapter adapter3 = new ArrayAdapter(this, R.layout.my_list_item_1, list);

//리스트뷰에 어댑터 적용

//lv.setAdapter(adapter1);

//lv.setAdapter(adapter2);

lv.setAdapter(adapter3);

}

}

 



- my_list_item_1.xml

(사용자가 만들어준 ListView 양식이다. 안드로이드에서 제공해주는 양식을 사용해도 되고 사용자가 만들어서 사용해도 된다.)

<?xml version="1.0" encoding="utf-8"?>

<TextView

    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:id="@+id/TextView1" 

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:textSize="30dp"

    android:textColor="#aec7e1"

    android:background="#cae682" /> 













Posted by -현's-

댓글을 달아 주세요