package org.kosta.useradapter.test;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.support.v4.app.NavUtils;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MemberDTO mto1 = new MemberDTO("id-1","홍길동");
MemberDTO mto2 = new MemberDTO("id-2","이순신");
MemberDTO mto3 = new MemberDTO("id-3","정준하");
MemberDTO mto4 = new MemberDTO("id-4","노홍철");
MemberDTO mto5 = new MemberDTO("id-5","유재석");
ArrayList<MemberDTO> list = new ArrayList<MemberDTO>();
list.add(mto1);
list.add(mto2);
list.add(mto3);
list.add(mto4);
list.add(mto5);
ListView listView = (ListView) findViewById(R.id.list_view);
MemberListAdapter adapter = new MemberListAdapter(this, R.layout.view_list, list);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
package org.kosta.useradapter.test;
public class MemberDTO {
private String id;
private String name;
public MemberDTO() {
super();
}
public MemberDTO(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package org.kosta.useradapter.test;
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.TextView;
/*
* 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);
}
return convertView;
}
}
//int count = adapter.getCount();
//for(int i=0;i<count;i++){
// View v = adapter.getView(i);
//}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_view"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/txt1"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/txt2"/>
</LinearLayout>
* 결과
'프로그래밍 > Android' 카테고리의 다른 글
메뉴실습 - OprionsMenuExam_inst[실습] (0) | 2012.07.31 |
---|---|
메뉴(OptionsMenu) - menu, item, group태그 (0) | 2012.07.31 |
리스트뷰(어뎁터뷰, 리스트뷰, 스피너, 갤러리) (0) | 2012.07.30 |
ImageView (0) | 2012.07.27 |
TextView (0) | 2012.07.27 |