18
로로 로로로로로 4/4 UNIT 12 로로 SW 로로로 로로로 로로로

로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

Embed Size (px)

Citation preview

Page 1: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

로봇 전화번호부 4/4UNIT

12

로봇 SW 콘텐츠 교육원조용수

Page 2: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

2학습 목표

• 뷰 홀더 패턴을 사용할 수 있다 .• 토스트를 사용할 수 있다 .• 클릭 이벤트를 처리할 수 있다 .

Page 3: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

미션3

Page 4: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

너무 많은 아이템4

@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

ListView listview = (ListView)findViewById(R.id.list);

for(int i = 0; i < 100; ++i) { phones.add(new PhoneInfo(R.drawable.boy, " 갑돌이 " + i, "010-1234-5678")); phones.add(new PhoneInfo(R.drawable.boy, " 갑순이 " + i, "010-5678-1234")); } …}

Page 5: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

뷰 홀더 패턴5

private class ViewHolder { ImageView icon; TextView name; TextView phone; ImageView call; }

• Widget 할당 부분을 Tag 에 저장하여 , 초기화 시간을 줄이는 방법

Page 6: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

뷰 홀더 패턴6

private class PhoneListAdapter extends ArrayAdapter<PhoneInfo>{ ......

@Override public View getView(int position, View convertView, ViewGroup parent) { @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.listitem, null); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); }

… return convertView;}

}

Page 7: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

뷰 홀더 패턴7

private class PhoneListAdapter extends ArrayAdapter<PhoneInfo>{ ......

@Override public View getView(int position, View convertView, ViewGroup parent) { @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.listitem, null); holder.icon = (ImageView)convertView.findViewById(R.id.ivProfile); holder.call = (ImageView)convertView.findViewById(R.id.ivPhone); holder.name = (TextView)convertView.findViewById(R.id.tvText1); holder.phone = (TextView)convertView.findViewById(R.id.tvText0); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } PhoneInfo info = (PhoneInfo)getItem(position); holder.name.setText(info.name); holder.phone.setText(info.phone); holder.icon.setImageResource(info.icon); return convertView; } }

Page 8: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

실습8

Page 9: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

버튼 이벤트9

private class ViewHolder { ImageView icon; TextView name; TextView phone; ImageView call; }

Page 10: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

버튼 이벤트10

@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.listitem, null); holder.icon = (ImageView)convertView.findViewById(R.id.ivProfile); holder.call = (ImageView)convertView.findViewById(R.id.ivPhone); holder.name = (TextView)convertView.findViewById(R.id.tvText1); holder.phone = (TextView)convertView.findViewById(R.id.tvText0); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } PhoneInfo info = (PhoneInfo)getItem(position); holder.name.setText(info.name); holder.phone.setText(info.phone); holder.icon.setImageResource(info.icon); return convertView; }

Page 11: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

버튼 이벤트11

PhoneInfo info = (PhoneInfo)getItem(position); holder.name.setText(info.name); holder.phone.setText(info.phone); holder.icon.setImageResource(info.icon); holder.call.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });

Page 12: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

토스트

• Toast– public static Toast makeText(Context context, int resId,

int duration)– public static final int LENGTH_SHORT– public static final int LENGTH_LONG– public void show()– public void cancel()

12

Page 13: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

버튼 이벤트13

PhoneInfo info = (PhoneInfo)getItem(position); holder.name.setText(info.name); holder.phone.setText(info.phone); holder.icon.setImageResource(info.icon); holder.call.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), info.phone, Toast.LENGTH_SHORT).show(); } });

Page 14: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

아이템 클릭 이벤트14

final PhoneInfo info = (PhoneInfo)getItem(position); holder.name.setText(info.name); holder.phone.setText(info.phone); holder.icon.setImageResource(info.icon); holder.call.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), "Button "+info.phone, Toast.LENGTH_SHORT).show(); } }); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), "View "+info.name, Toast.LENGTH_SHORT).show(); } }); return convertView;

Page 15: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

아이템 배경색

• res/drawable/selection_list_item.xml

15

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_enabled="true" android:state_pressed="false" android:state_focused="true" android:drawable="@color/list_focused" /><item android:state_enabled="true" android:state_pressed="true" android:drawable="@color/list_pressed" /><item android:state_enabled="true" android:drawable="@color/list_normal" /><item android:state_enabled="false" android:drawable="@color/list_disabled" /></selector>

Page 16: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

아이템 배경색

• res/values/colors.xml

16

<resources> <color name="list_normal">#ff272729</color> <color name="list_pressed">#ffff7a00</color> <color name="list_focused">#ffed1624</color> <color name="list_disabled">#ff989898</color></resources>

Page 17: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

아이템 클릭 이벤트17

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:gravity="center_vertical" android:padding="6dp" android:descendantFocusability="blocksDescendants" android:background="@drawable/selection_list_item" android:layout_height="60dp">

Page 18: 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를

실습18