안드로이드 프로그램을 위해 리스트뷰 레이아웃을 꾸몄습니다
RelativeLayout 를 사용했습니다
위 화면 구성과 같은 내용으로 왼쪽이 이미지 오른쪽에 아이디 내용 시간을 구성했습니다
기본틀은 아래 블로그를 참고하고 제가 원하는대로 수정을 한 코딩 내용 입니다
http://tigerwoods.tistory.com/13
java 코드 입니다
package ibm.cw.f5; import android.app.Activity; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class DongProject1Activity extends ListActivity {
// ListView에 뿌릴 Data String[] items={ "Android동해물과 백두산이Android동해물과 백두산이", "iPhone동해물과 백두산이동해물과 백두산이", "UI동해물과 백두산이동해물과 백두산이", "Java동해물과 백두산이동해물과 백두산이", "SDK동해물과 백두산이동해물과 백두산이", "Adapter동해물과 백두산이동해물과 백두산이", "List동해물과 백두산이동해물과 백두산이", "This동해물과 백두산이동해물과 백두산이", "is동해물과 백두산이동해물과 백두산이", "Fun동해물과 백두산이동해물과 백두산이" }; TextView tv; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
// 커스텀 ArrayAdapter 선언/초기화. MyArrayAdapter aa = new MyArrayAdapter(this);
// 본 Activity의 아답터로 aa 지정. setListAdapter(aa);
tv = (TextView)findViewById(R.id.selection); }
// ListView의 아이템이 클릭되면 호출되는 callback. public void onListItemClick(ListView l, View v, int position, long id) { tv.setText(items[position]); }
// ArrayAdapter에서 상속받는 커스텀 ArrayAdapter 정의. class MyArrayAdapter extends ArrayAdapter { // 생성자 내부에서 초기화 Context context;
// 생성자 MyArrayAdapter(Context context) { super(context, R.layout.row, items);
// instance 변수(this.context)를 생성자 호출시 전달받은 지역 변수(context)로 초기화. this.context = context; }
// ListView에서 각 행(row)을 화면에 표시하기 전 호출됨. public View getView(int position, View convertView, ViewGroup parent){ // LayoutInflater의 객체 inflater를 현재 context와 연결된 inflater로 초기화. LayoutInflater inflater = ((Activity)context).getLayoutInflater();
// inflator객체를 이용하여 \res\laout\row.xml 파싱 View row = (View)inflater.inflate(R.layout.row, null);
//아이디를 담은 공간 생성 TextView inName = (TextView)row.findViewById(R.id.idname); inName.setText(" " + "IDtest");
// TextView 객체 label을 row 객체 내부에 있는 R.id.label로 초기화 // 내용 담을 공간 TextView label = (TextView)row.findViewById(R.id.label); // label에 텍스트 설정. label.setText(" " + items[position]);
//날짜 시간 담을 공간 TextView YyMmDd = (TextView)row.findViewById(R.id.yymmdd); YyMmDd.setText("11년 8월 8일" + " ");
// items 배열에서 현제 처리중인 위치의 text 길이가 4 이상이면 // 아이콘을 'x' 마크로 변경. 4미만일때는 아무 변화없이 xml layout 초기값인 '첵크'마크 사용됨. if(items[position].length()>4) {
// 이미지뷰 객체 icon을 row내부에 정의된 R.id.icon으로 초기화. ImageView icon = (ImageView)row.findViewById(R.id.icon);
// icon 객체가 표현할 리소스를 'x' 마크(R.drawable.delete)로 지정. // icon.setImageResource(R.drawable.delete); icon.setImageResource(R.drawable.tiger);
}
// 커스터마이징 된 View 리턴. return row; } }; } |
main XML 입니다
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >
<!-- ListView에서 클릭되는 Item 확인 용 TextView --> <TextView android:id="@+id/selection" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="No Selection" android:textColor="#FF0000" android:textSize="20px" />
<!-- ListActivity의 기본 ListView --> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<!-- ListView가 비어있을때(empty) 표현되는 TextView --> <TextView android:id="@id/android:empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="No Item" />
</LinearLayout> |
row xml 입니다
<?xml version="1.0" encoding="utf-8"?>
<!-- ListView의 행(Row)마다 적용될 layout --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >
<!-- 각 행(row)의 시작은 ImageView --> <ImageView android:id="@+id/icon" android:src="@drawable/tiger" android:layout_width="100px" android:layout_height="100px" />
<!-- ImageView 오른편 위에 표시될 아이디 부분 --> <TextView android:layout_toRightOf="@id/icon" android:id="@+id/idname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25px" />
<!-- ImageView 오른편에 표시 될 Text --> <TextView android:layout_alignLeft="@id/idname" android:layout_below="@id/idname" android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="35px" />
<!-- ImageView 오른편에 표시 될 Text --> <TextView android:layout_alignRight="@id/label" android:layout_below="@id/label" android:id="@+id/yymmdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20px" />
</RelativeLayout> |