본문 바로가기

Programming/과거포스팅

AdapterView


기본적인 Adapter입니다. 
도서검색 프로그램을 짜는 과정에서 기본적인 출력 레이아웃을 만들고 있습니다.
클래스는 main이 되는 LibraryBookList클래스 리스트뷰에 출력할 항목을 담는 LibrayItem클래스
BaseAdapter를 상속받아서 재정의를 하는 LibrayAdapter클래스로 구성됩니다.
xml파일은 기본적인 리스트뷰 librarybooklist.xml과 리스트뷰의 한줄한줄에 들어갈 자식 layout인 librarybooklist_menu.xml로 구성됩니다. 

전체 코드입니다.
  LibraryBookList.java
package Don.Library;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class LibraryBookList extends Activity {
	ArrayList arItem;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.librarybooklist);
        
        arItem = new ArrayList();
        LibrayItem li;
        
        //LibrayItem 클래스를 호출하여 리스트에 넣는 과정
        li = new LibrayItem(R.drawable.icon, "테스트1"); arItem.add(li);
        li = new LibrayItem(R.drawable.icon, "테스트2"); arItem.add(li);
        
        LibrayAdapter LiAdapter = new LibrayAdapter(this, R.layout.librarybooklist_menu, arItem);
        
        
        ListView LiList;
        LiList = (ListView)findViewById(R.id.booklist);
        LiList.setAdapter(LiAdapter);
    }
}

  LibrayItem.java  
package Don.Library;

//리스트 뷰에 출력할 항목들
public class LibrayItem {
	LibrayItem(int aIcon, String aName){
		Icon = aIcon;
		Name = aName;
	}
	int Icon;
	String Name;

}

  LibrayAdapter.java  
package Don.Library;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class LibrayAdapter extends BaseAdapter{
	Context maincon;
	LayoutInflater Inflater;
	ArrayList arSrc;
	int layout;
		
	public LibrayAdapter(Context context, int alayout, ArrayList aarSrc){
		maincon = context;
		Inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		arSrc = aarSrc;
		layout = alayout;
	}

	public int getCount() {
		// TODO Auto-generated method stub
		return arSrc.size();
		
	}

	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return arSrc.get(position).Name;
	}

	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
	
	
	//이부분에서 각항목의 뷰를 생성합니다.
	public View getView(int position, View convertView, ViewGroup parent) {
		final int pos = position;
		
		
		if(convertView == null){
			convertView = Inflater.inflate(layout, parent, false);
		}
		//왼쪽에 이미지를 출력하기 위한 코드입니다.
		ImageView img = (ImageView)convertView.findViewById(R.id.listimg);
		img.setImageResource(arSrc.get(position).Icon);
		
		//포지션 값에 따라서 arraylist에 저장되어있는 값을 출력하는 코드입니다.
		TextView txt = (TextView)convertView.findViewById(R.id.listtext);
		txt.setText(arSrc.get(position).Name);
		
		return convertView;
	}
}

  librarybooklist.xml  


   

  librarybooklist_menu.xml  


    
    
    

다음번엔 SimpleAdapter를 정리해서 올리겠습니다.