11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -
ArrayAdapter<T> ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, android.r.layout.simple_list_item_1, list); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, list); 리스트뷰 - 2 -
레이아웃 ID simple_list_item_1 simple_list_item_1 simple_list_item_checked simple_list_item_single_choice simple_list_item_multiple_choice 설명하나의텍스트뷰사용두개의텍스트뷰사용항목당체크표시한개의항목만선택여러개의항목선택가능 2) 활동하기 활동개요 - 3 -
항목을선택하면항목의문자열로토스트메시지가화면에표시됨 활동과정 - 4 -
strings.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 4 <string name="app_name">listviewtest</string> 5 <string name="hello_world">hello world!</string> 6 <string name="menu_settings">settings</string> 7 8 <string-array name="fruits"> 9 <item> 사과 </item> 10 <item> 배 </item> 11 <item> 딸기 </item> 12 <item> 수박 </item> 13 <item> 참회 </item> 14 <item> 파인애플 </item> 15 <item> 포도 </item> 16 <item> 바나나 </item> 17 <item> 키위 </item> 18 <item> 귤 </item> 19 <item> 망고 </item> 20 </string-array> 21 22 </resources> 8행 : string-array 이름은다음과같이사용한다. adapter = ArrayAdapter.createFromResource(this, R.array.fruits, android.r.layout.simple_list_item_1); 3 XML 코딩 : main.xml main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical" > 6-5 -
7 8 9 10 11 12 <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> ListViewActivity.java 1 package com.example.listviewtest; 2 3 import android.app.activity; 4 import android.os.bundle; 5 import android.widget.arrayadapter; 6 import android.widget.listview; 7 8 public class ListViewActivity extends Activity { 9 public void oncreate(bundle savedinstancestate) { 10 super.oncreate(savedinstancestate); 11 setcontentview(r.layout.main); 12 13 (1) 소스코드에서데이터정의한경우 14 String[] list = { " 배 ", 복숭아, " 딸기 ", " 수박 ", " 참외 ", 감, " 파인애플 ", 15 " 포도 ", " 바나나 ", " 키위 ", " 귤 " ; 16 17 ArrayAdapter<String> adapter; 18 adapter = new ArrayAdapter<String>(this, 19 android.r.layout.simple_list_item_1, list); 20 21 (2) 리소스로데이터정의한경우 22 ArrayAdapter<CharSequence> adapter; - 6 -
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 adapter = ArrayAdapter.createFromResource(this, R.array.fruits, android.r.layout.simple_list_item_1); ListView listview = (ListView) findviewbyid(r.id.list); listview.setadapter(adapter); listview.setonitemclicklistener(new OnItemClickListener() { public void onitemclick(adapterview<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), ((TextView) view).gettext(), Toast.LENGTH_SHORT).show(); ); 29~35행 : 리스트뷰에서사용자가특정항목을선택하면이벤트가발생하는데이때 setonitemclicklistener() 가호출된다. 익명클래스를정의하고임시객체를생성하여그안에 onitemclick() 를정의한다. 사용자가리스트뷰의항목을클릭하면 onitemclick() 가호출되고화면하단에토스트메시지가출력된다. 30행 : <?> 클래스는어떤타입의어댑터뷰도받을수있음을의미한다. 3) 활동하기 활동개요 - 7 -
활동과정 strings.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 4 <string name="app_name">listviewtest</string> - 8 -
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <string name="hello_world">hello world!</string> <string name="menu_settings">settings</string> <string name="fruits_prompt"> 과일 </string> <string-array name="fruits"> <item> 사과 </item> <item> 배 </item> <item> 딸기 </item> <item> 수박 </item> <item> 참회 </item> <item> 파인애플 </item> <item> 포도 </item> <item> 바나나 </item> <item> 키위 </item> <item> 귤 </item> <item> 망고 </item> </string-array> </resources> 8행 : 레이아웃에서스피너를정의할때 android:prompt 속성값을위한정의다. main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="wrap_content" 5 android:orientation="vertical" 6 android:padding="10dip" > 7 8 <TextView 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" - 9 -
11 12 13 14 15 16 17 18 19 20 android:layout_margintop="10dip" android:text=" 좋아하는과일을선택하시오 " /> <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/planet_prompt" /> </LinearLayout> 18행 : android:prompt 속성값은텍스트뷰의 android:text 속성과같이상수로정의할수없으므로 strings.xml에서정의하고사용한다. SpinnerTestActivity.java 1 package com.example.spinnertest; 2 3 import android.app.activity; 4 import android.os.bundle; 5 import android.view.view; 6 import android.widget.adapterview; 7 import android.widget.adapterview.onitemselectedlistener; 8 import android.widget.arrayadapter; 9 import android.widget.spinner; 10 import android.widget.toast; 11 12 public class SpinnerTestActivity extends Activity { 13 /** Called when the activity is first created. */ 14 @Override 15 public void oncreate(bundle savedinstancestate) { 16 super.oncreate(savedinstancestate); 17 setcontentview(r.layout.main); 18 19 Spinner spinner = (Spinner) findviewbyid(r.id.spinner); 20 ArrayAdapter<CharSequence> adapter = - 10 -
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ArrayAdapter.createFromResource(this, R.array.fruits, android.r.layout.simple_spinner_item); adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); spinner.setadapter(adapter); spinner.setonitemselectedlistener(new OnItemSelectedListener() { public void onitemselected(adapterview<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext(), " 당신이선택한과일은 " + parent.getitematposition(pos).tostring(),toast.length_long).show(); public void onnothingselected(adapterview<?> arg0) { // TODO Auto-generated method stub ); 26~31행 : 리스트뷰에서사용자가특정항목을선택하면이벤트가발생하는데이때 setonitemclicklistener() 가호출된다. 익명클래스를정의하고임시객체를생성하여그안에 onitemclick() 를정의한다. 사용자가리스트뷰의항목을클릭하면 onitemclick() 가호출되고화면하단에토스트메시지가출력된다. 27행 : <?> 는어떤타입의 AdapterView도받을수있다. 활동지 4 배운내용정리 - 11 -
5 학습확인하기 - 12 -
6 지식창고 참고문헌 참고사이트 - 13 -