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)에 올려두었다.