2.3 이전 : 물리적 메뉴 버튼 클릭시 하단에서 최대 6단짜리 메뉴가 올라옴. 3.0 이후 : action 바의 메뉴 버튼 클릭시(...세로) drop down으로 나옴 - Activity에 메뉴 역할
ex :
- Menu : 메뉴판, MenuItem들을 담는 container - MenuItem : 선택할 메뉴(메뉴판 안에 있는 항목들)
- callback 메소드 (Activity) - onCreateOptionsMenu(Menu) : 메뉴 객체를 받아 메뉴를 구성하는 메소드, 메뉴 최초 호출시 한번만 호출된다. - onPrepareOptionsMenu(Menu) : 사용자가 메뉴를 호출할 때마다 호출되는 메소드 - 메뉴를 재구성할 때 사용(메뉴를 누를때마다 메뉴가 변경될 경우) - onOptionsItemSelected(MenuItem) : 메뉴아이템 선택시 발생하는 이벤트 처리
/* * Adapter 클래스 작성 * 1. BaseAdapter나 그 하위 클래스 상속 * 2. overriding * - getItem(); * - getItemId(); * - getCount(); * - getView() * 3. 생성자 - Context, Data들을 인수로 받는다. * */ public class MemberListAdapter extends BaseAdapter{ private LayoutInflater inflater;//layout.xml 설정 -> View객체를 생성 private ArrayList<MemberDTO> items; //data들(View로 바꿔질 data) private int layoutId;//layout.xml(view_list.xml)의 resource 아이디 public MemberListAdapter(Context context, int layoutId, ArrayList<MemberDTO> items){ this.layoutId = layoutId; this.items = items; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//System이 제공하는 Service객체를 받는다.(알림,입력기능 등등)
} //총 item의 개수를 return (ArrayList의 size) @Override public int getCount() { return items.size(); } //인수로 받은 위치(position)의 item객체를 return @Override public Object getItem(int position) { return items.get(position); } //인수로 받은 위치(position)의 item의 item id를 return @Override public long getItemId(int position) { return position; } /* * item -> View로 변환해서 return * 인수 * 1. 위치 - data의 index * 2. View - 처음 getView 호출시 null, 그 위치의 getView가 다시 호출 되는 경우 이미 * 만들어진 View를 두번째 인수로 넘겨 준다. (View의 재사용) * 3. AdapterView - 각 항목 View들을 담을 AdapterView를 넘겨준다. */ @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null){//position의 View를 처음 만드는 경우 //View객체 생성 MemberDTO mto = items.get(position); String id = mto.getId(); String name = mto.getName(); //xml 레이아웃 설정 -> View객체를 생성 //1. 레이아웃 파일의 resource id, 2. xml에 설정대로 만들어진 View객체를 붙일 root View객체(null일때는 그냥 앞에 레이아웃 자체를 리턴한다.보통null을 넣음) convertView = inflater.inflate(layoutId, null); TextView tv1 = (TextView) convertView.findViewById(R.id.txt1); TextView tv2 = (TextView) convertView.findViewById(R.id.txt2); tv1.setText(id); tv2.setText(name);