728x90
샘플을 통해 HTML에서 select (선택 목록)에 해당하는 Spinner의 사용법을 소개 합니다.

Spinner

Spinner는 여러개의 목록에서 값을 선택하고자 할 때 사용하는 View 이다. HTML에서 보면 select 태그와 동일한 기능을 한다.

  • /res/layout/~.xml
<Spinner
    android:id="@+id/max_contacts" 
    android:layout_width="200dip" 
    android:layout_height="wrap_content"
    //--- 선택 목록 화면에 표시할 제목
    android:prompt="@string/smartsearch_max_contacts"   
    style="@android:style/Widget.Spinner"
    >
</Spinner>
  • /res/values/~.xml
  • 선택 목록을 배열로 관리하면 편리 하다.
  • getResources().getStringArray(
    R.array.smartsearch_max_contacts_array)로 문자열 배열을 가져올 수 있다.
<?xml version="1.0" encoding="utf-8" ?>
<resources>
	<string-array name="smartsearch_max_contacts_array">
 	    <item>10</item>
	    <item>20</item> 
	    <item>30</item>
	    <item>40</item>
	    <item>50</item>
	    <item>100</item>
	    <item>200</item>
	    <item>500</item> 
	    <item>1000</item>
	</string-array>
</resources>
  • Activity
  • implements android.widget.AdapterView$OnItemSelectedListener 를 구현 하여야 한다.
private int maxContacts = 100;
private int maxContactsPos = 5;
private Spinner vMaxContacts = null;
ArrayAdapter<CharSequence> maxContactsAdapter= null;

vMaxContacts = (Spinner)findViewById(R.id.max_contacts);
maxContactsAdapter = ArrayAdapter.createFromResource(this, 
    R.array.smartsearch_max_contacts_array, 
    android.R.layout.simple_spinner_item);
maxContactsAdapter.setDropDownViewResource(
    android.R.layout.simple_spinner_dropdown_item);
vMaxContacts.setAdapter(maxContactsAdapter);
vMaxContacts.setOnItemSelectedListener(this);
//--- 선택값을 지정할 때마다 onItemSelected 함수가 호출
vMaxContacts.setSelection(maxContactsPos);      

//--- parent. 상위 View, view. 선택된 뷰
//--- position. Adapter에서 view의 위치
//-- id. 선택된 항목의 row id
public void onItemSelected(AdapterView<?> parent, View view, 
                           int position, long id) {
    if (parent == vMaxContacts) {
        maxContactsPos = position;
        maxContacts = Integer.parseInt(
            parent.getItemAtPosition(position).toString());
    }
}

public void onNothingSelected(AdapterView<?> parent) {
}
728x90

+ Recent posts