Download presentation
Presentation is loading. Please wait.
1
UNIT 11 로봇 전화번호부 3/4 로봇 SW 콘텐츠 교육원 조용수
2
학습 목표 Custom Adapter를 사용한다. Item View 의 재사용.
3
미션
4
리스트 뷰 : 사용자 데이터 Class private class PhoneInfo { int icon; String name;
String phone; PhoneInfo(int icon, String name, String phone) this.icon = icon; this.name = name; this.phone = phone; }
5
리스트 뷰 : 사용자 데이터 초기화 public class MainActivity extends Activity {
ListView listView; private ArrayList<PhoneInfo> phones = new ArrayList<PhoneInfo>(); ArrayAdapter<String> arrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.listView); phones = new ArrayList<PhoneInfo>(); phones.add(new PhoneInfo(R.drawable.boy, "갑돌이", " ")); phones.add(new PhoneInfo(R.drawable.boy, "갑순이", " "));
6
Custom Adapter 구조 private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { LayoutInflater inflater; Context context; PhoneListAdapter(Context context, ArrayList<PhoneInfo> list) super(context, 0, list); this.context = context; inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { return super.getView(position, convertView, parent);
7
Custom Adapter 구조 getView : List Item View 를 반환하는 Method
convertView : 데이터를 표시할 View Position : View 에 표시 할 데이터 위치 private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { … @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = inflater.inflate(R.layout.listitem, null); return convertView; }
8
Custom Adapter 구조 private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { … @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = inflater.inflate(R.layout.listitem, null); ImageView ivPhoto = (ImageView)convertView.findViewById(R.id.ivProfile); ImageView ivPhone = (ImageView)convertView.findViewById(R.id.ivPhone); TextView tvName = (TextView)convertView.findViewById(R.id.tvText1); TextView tvPhone = (TextView)convertView.findViewById(R.id.tvText0); return convertView; }
9
Custom Adapter 구조 private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { … @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = inflater.inflate(R.layout.listitem, null); ImageView ivPhoto = (ImageView)convertView.findViewById(R.id.ivProfile); ImageView ivPhone = (ImageView)convertView.findViewById(R.id.ivPhone); TextView tvName = (TextView)convertView.findViewById(R.id.tvText1); TextView tvPhone = (TextView)convertView.findViewById(R.id.tvText0); PhoneInfo info = (PhoneInfo)getItem(position); tvName.setText(info.name); tvPhone.setText(info.phone); ivPhoto.setImageResource(info.icon); return convertView; }
10
리스트 뷰 : 아답터 적용 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.listView); phones = new ArrayList<PhoneInfo>(); phones.add(new PhoneInfo(R.drawable.girl1, "갑돌이", " ")); phones.add(new PhoneInfo(R.drawable.girl2, "갑순이", " ")); PhoneListAdapter phoneListAdapter = new PhoneListAdapter(this, phones); listView.setAdapter(phoneListAdapter); phoneListAdapter.notifyDataSetChanged();
11
리스트 뷰
12
너무 많은 아이템 @Override protected void onCreate(Bundle savedInstanceState) { … for(int i = 0; i < 100; ++i) { phones.add(new PhoneInfo(R.drawable.boy, "갑돌이" + i, " ")); phones.add(new PhoneInfo(R.drawable.boy, "갑순이" + i, " ")); }
13
Custom Adapter 구조 getView : List Item View 의 재사용
private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { … @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { convertView = inflater.inflate(R.layout.listitem, null); } return convertView;
14
Custom Adapter 구조 View Widget 할당
private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { … @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { convertView = inflater.inflate(R.layout.listitem, null); } ImageView ivPhoto = (ImageView)convertView.findViewById(R.id.ivProfile); ImageView ivPhone = (ImageView)convertView.findViewById(R.id.ivPhone); TextView tvName = (TextView)convertView.findViewById(R.id.tvText1); TextView tvPhone = (TextView)convertView.findViewById(R.id.tvText0); return convertView;
15
Custom Adapter 구조 데이터 표시
private class PhoneListAdapter extends ArrayAdapter<PhoneInfo> { … @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { convertView = inflater.inflate(R.layout.listitem, null); } ImageView ivPhoto = (ImageView)convertView.findViewById(R.id.ivProfile); ImageView ivPhone = (ImageView)convertView.findViewById(R.id.ivPhone); TextView tvName = (TextView)convertView.findViewById(R.id.tvText1); TextView tvPhone = (TextView)convertView.findViewById(R.id.tvText0); PhoneInfo info = (PhoneInfo)getItem(position); tvName.setText(info.name); tvPhone.setText(info.phone); ivPhoto.setImageResource(info.icon); return convertView;
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.