728x90

simple_list_item_1 arrayAdapter는 아이템이 TextView만으로 구성되고 데이터가 String 배열이기 때문에 ArrayAdapter 만으로 그 기능을 제공할 수 있다.

Custom ListView 를 제공하기 위해서는 xml 을 정의하고 ArrayAdapter 기능을 확장해야 한다.


사용자 정의형 ListView 에 뿌려질 xml 를 정의하고, Inflation 해주어야 한다.

 item 을 위한 xml 정의(Layout)
 사용자에게 보여질 xml 를 만들고 나서, 실제 Data를 연결할 Class 를 정의한다.
 person_item.xml 과 PersonData.java 파일을 생성한다. 


먼저, layout 폴더에 person_item.xml 파일을 추가한다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/child_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp" >

    <ImageView
        android:id="@+id/mImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@mipmap/ic_launcher"
        android:layout_weight="1"
        />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_weight="4"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dip"
            android:text="이름"
            android:textSize="20sp"
            android:textStyle="bold"
            />

        <TextView
        android:id="@+id/mobileNO"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="휴대폰번호"
        android:textStyle="bold"
        />

        <TextView
            android:id="@+id/officeNO"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:text="휴대폰번호"
            android:textStyle="bold"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <Button
            android:id="@+id/childListBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center_horizontal|center_vertical"
            android:text="Btn"
            android:textAllCaps="false"
            />
    </LinearLayout>
</LinearLayout>



PersonData.java Class 파일을 생성한다.

그리고 변수를 추가한다.

public class PesonData {
    // PersonData 정보를 담고 있는 객체 생성
    private int profile_image;
    private String uid;
    private String name;
    private String mobile;

    public PesonData(){  // 생성자
    }


변수가 private으로 되어있으므로 외부에서 접근할수있도록 메소드를 만들어주어야 한다.

데이터 없는 생성자 다음 빈공간에서 Alt + Insert 키를 누르고, Gatter and Setter 를 선택하면 자동으로 코드가 추가된다.

다음으로 Generator 를 생성하기 위해 Alt + Insert 키를 누르고 아래 그림처럼 따라 한다.


추가하면 위와 같이 나온다.

이 파일에 대한 전체 코드는 아래와 같다.


public class PesonData {
    // PersonData 정보를 담고 있는 객체 생성
    private int profile_image;
    private String uid;
    private String name;
    private String mobile;

    public PesonData(){  // 생성자
    }

    public PesonData(int profile_image, String uid, String name, String mobile) {
        this.profile_image = profile_image;
        this.uid = uid;
        this.name = name;
        this.mobile = mobile;
    }

    public int getProfile_image() {
        return profile_image;
    }

    public void setProfile_image(int profile_image) {
        this.profile_image = profile_image;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
}
 


내용을 구성하는 PersonData Class까지 작성했다.

코드는 컴파일하면서 에러가 발생하면 다시 수정하면서 작성해서 명칭 등이 약간 변경되었다.

실제 코드를 ListViewAdapter 만드는 방법 게시글(http://link2me.tistory.com/1252)에 올려두었다.


블로그 이미지

Link2Me

,