본문 바로가기

보물창고/Programming

안드로이드 RelativeLayout 리스트 뷰 꾸미기 [이미지, 아이디, 시간 포함, 레이아웃, list view, row, android, layout]

반응형




안드로이드 프로그램을 위해 리스트뷰 레이아웃을 꾸몄습니다
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>

 
 


반응형