본문 바로가기

Daily Sample

[Day13] Android Custom ListView App 소스

TITLE : Android Custom ListView App

Date : 2010/06/29

Writen by Dayyoung

Description :

This is Source that make the App show World cup teams List by Custom ListView.

Download Link : 

Reference Site: http://android-town.org , Naver 포탈 월드컵 정보

일반적으로 스마트폰 APP에서 가장 접하기 쉬운 구조는 ListView형태일 것이다.

ListView는 가장 많은 정보를 터치와 슬라이드를 이용해서 쉽게 접근할 수 있는 장점이 있다.

안드로이드 기본 ListView를 이용할 수 도 있지만 형태가 단순하고 1줄에 1개의 값만 입력할 수있다.

기본 ListView를 사용자정의해서 사용하기 위한 과정은 처음 사용자입장에서 다소 복잡할 수 있는데

객체지향언어의 Adapter패턴이 적용된 예라고 하니 공부하는 분석해 보자. 
 

 

 <HeadFirst책에 나온 아답터 패턴 >

1개의 ListView를 사용자정의 하기위해 많은 클래스가 필요한지 이해하기 어려울 수 있지만, 기존의 사용자 정의View를 연습해봣다면 익숙해질 것이다.

ListView는 사실 그냥 사용하기도 힘들다 -_-;

오늘은 사용자 ListView를 이용한 월드컵 APP 만들기 !

 

1. 한줄의 Item에 대한 사용자정의를 list.xml 과 IconTextItem.java /IconTextView.java 파일로 구현한다.
 

 

2. BaseAdater 클래스를 상속받는 IconTextListAdapter의 GetView()에 구현한다.

public View getView(int position, View convertView, ViewGroup parent) {

  IconTextView itemView;
  if (convertView == null) {
   itemView = new IconTextView(mContext, mItems.get(position));
  } else {
   itemView = (IconTextView) convertView;   
   itemView.setIcon(mItems.get(position).getIcon());
   itemView.setText(0, mItems.get(position).getData(0));
   itemView.setText(1, mItems.get(position).getData(1));
   itemView.setText(2, mItems.get(position).getData(2));
  }

  return itemView;
 }


 

3.클릭했을 때 getDate()메소드로 IconTextView의 정보를 가져오게 했다.

@Override
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     long arg3) {
    // TODO Auto-generated method stub    
    IconTextItem  Item = (IconTextItem)adapter.getItem(arg2);
    String[] data = Item.getData();      
    Toast.makeText(getApplicationContext(),”국가 : ” + data[0] + “\n” + “Nation : “+ data[1] +”\n”+ “피파순위 : “+ data[2] , 1).show();     
   }


 4. layout-land 폴더를 만들어서 가로모드 전환 시, 상단의 TextView를 날린다.

 

< 사용자 정의 ListView의 소스파일 구조 >

IconTextItem.java – ListView의 한줄을 의미하는 Item에 대한 자료구조와 Set/Get 메소드 사용자 정의 하고 있다. (상상력으로 메모리만 할당된  View)

IconTextView.java – LinearLayout 클래스를 상속받는 View .  생성될때 LayoutInflater로 실제적으로 구현된다. (XML디자인+메모리할당=실제적인 View)

IconTextListAdapter.java – BaseAdapter 클래스를 상속받는 각각의 View를 ListView에 적용해주는 고마운(?) 아답터

MainActivity.java – 사용자정의 Listview가 표시될 Activity. Main.xml에서 사용자 ListView를  배치한다.

스마트폰 App을 구성할 때 ListView형태는 매우 일반적이다. 기본 ListView를 사용할 수도 있겠지만

좀더 사용자가 원하는 정보를 다양하게 보여주기 위해서 사용자 정의 ListView는 필수요소 일 것이다.

Creative Commons License
이 저작물은 크리에이티브 커먼즈 저작자표시 3.0 Unported 라이선스에 따라 이용할 수 있습니다.