public class ListIconText extends Activity {
/** Called when the activity is first created. */
// 내부 클래스를 담을 ArrayList
ArrayList<MyItem> arItem;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arItem = new ArrayList<MyItem>();
// 클래스의 객체를 선언하여
MyItem mi;
// 객체를 생성하여 arItem에 담음
mi = new MyItem(R.drawable.icon, "삼성 노트북");arItem.add(mi);
mi = new MyItem(R.drawable.icon, "LG 세탁기");arItem.add(mi);
mi = new MyItem(R.drawable.icon, "대우 마티즈");arItem.add(mi);
// BaseAdpater를 상속받아 선언
// 리스트 뷰에게 이 항목의 집합을 제공하는 클래스
// 어댑터를 동작하려면 BaseAdapter로부터 상속받아
// 기본 기능을 물려받은 후 요구하는 추상 메서드를 재정의 해야함.
MyListAdapter MyAdapter = new MyListAdapter(this, R.layout.icontext, arItem);
ListView MyList;
MyList=(ListView)findViewById(R.id.list);
MyList.setAdapter(MyAdapter);
}
}
//리스트 뷰에 출력할 항목
class MyItem {
MyItem(int aIcon, String aName) {
Icon = aIcon;
Name = aName;
}
int Icon;
String Name;
}
//어댑터 클래스
class MyListAdapter extends BaseAdapter {
Context maincon;
LayoutInflater Inflater;
ArrayList<MyItem> arSrc;
int layout;
public MyListAdapter(Context context, int alayout, ArrayList<MyItem> aarSrc) {
maincon = context;
Inflater = (LayoutInflater)context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
arSrc = aarSrc;
layout = alayout;
}
public int getCount() {
return arSrc.size();
}
public String getItem(int position) {
return arSrc.get(position).Name;
}
public long getItemId(int position) {
return position;
}
// 항목 하나를 출력하기 위한 뷰
// 각 항목의 뷰 생성
// position -> 생성할 항목의 순서값
// parent -> 생성되는 뷰의 부모
// convertView -> 이전에 생성된 차일드 뷰
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.img);
img.setImageResource(arSrc.get(position).Icon);
TextView txt = (TextView)convertView.findViewById(R.id.text);
txt.setText(arSrc.get(position).Name);
Button btn = (Button)convertView.findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
String str = arSrc.get(pos).Name + "를 주문합니다.";
Toast.makeText(maincon, str, Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
|