Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

1 로봇 전화번호부 4/4 UNIT 12 로봇 SW 콘텐츠 교육원 조용수

2 학습 목표 뷰 홀더 패턴을 사용할 수 있다. 토스트를 사용할 수 있다. 클릭 이벤트를 처리할 수 있다. 2

3 미션 3

4 너무 많은 아이템 4 @Override protected 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")); } … }

5 뷰 홀더 패턴 5 private class ViewHolder { ImageView icon; TextView name; TextView phone; ImageView call; } Widget 할당 부분을 Tag 에 저장하여, 초기화 시간을 줄이는 방법

6 뷰 홀더 패턴 6 private class PhoneListAdapter extends ArrayAdapter {...... @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; }

7 뷰 홀더 패턴 7 private class PhoneListAdapter extends ArrayAdapter {...... @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; }

8 실습 8

9 버튼 이벤트 9 private class ViewHolder { ImageView icon; TextView name; TextView phone; ImageView call; }

10 버튼 이벤트 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; }

11 버튼 이벤트 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) { } });

12 토스트 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

13 버튼 이벤트 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(); } });

14 아이템 클릭 이벤트 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;

15 아이템 배경색 res/drawable/selection_list_item.xml 15 <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" />

16 아이템 배경색 res/values/colors.xml 16 #ff272729 #ffff7a00 #ffed1624 #ff989898

17 아이템 클릭 이벤트 17 <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">

18 실습 18


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

Similar presentations


Ads by Google