[안드로이드 스피너] 어레이어댑터를 이용한 스피너 구현 및 이벤트 리스너. Android spinner and event listener example using arrayadater.
1. 스피너란?
안드로이드에서 스피너는 핵심 기능으로 사용되기 보다는 사용자 UI로써 일련의 작업 과정에 속하는 일이 많습니다. 예를들면 회원가입 시 생년월일이나 지역을 선택하는 과정에서 쓰입니다. 아래 그림은 스피너 쓰임의 예를 보여줍니다.
[그림 1] 회원 가입 시 스피너의 사용 예
2. 스피너 생성
스피너의 생성 시 사용되는 네임은 Spinner입니다.
in activity_main.xml
<Spinner
android:id="@+id/spinner"
android:layout_width="368dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="parent" />
3. ArrayAdapter 사용
기본적으로 ArrayAdapter는 현재 Context(1)와 사용할 LayoutResource(2), Array(or ArrayList)(3)를 받아 스피너를 만들어줍니다. ArrayAdapter 객체를 생성하는 방법은 아래와 같다.
[그림 2] ArrayAdapter 객체 생성 방법
다음으로는 Spinner Wizet의 ID를 참조시킨 Spinner객체에 Adapter를 세팅한다.
[그림 3] Spinner 객체에 ArrayAdapter 세팅하는 과정
위와 같이 위젯을 만들고 Spinner객체 생성 후 ArrayAdapter를 적용하면 아래 그림과 같이 기능한다.
[그림 4] Spinner 객체에 ArrayAdapter 세팅 후 구현된 기능
4. Event Listener 등록
/**생략..
* in MainActivity.class*/
//event listener
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,"선택된 아이템 : "+spinner.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
/**..생략*/
[그림 5] Spinner 객체에 Event Listener를 등록해 구현한 기능
5. 전체 소스 코드
MainActivity.class
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
/**
* 스피너 사용법과 이벤트 리스너 처리
* */
public class MainActivity extends AppCompatActivity{
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//id refernece for wizet
spinner = (Spinner)findViewById(R.id.spinner);
//input array data
final ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("4");
list.add("5");
String[] list2 = new String[2];
list2[0] = "안녕";
list2[1] = "하세요";
//using ArrayAdapter
ArrayAdapter spinnerAdapter;
spinnerAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, list2);
spinner.setAdapter(spinnerAdapter);
//event listener
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,"선택된 아이템 : "+spinner.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="peace.study1.MainActivity">
<Spinner
android:id="@+id/spinner"
android:layout_width="368dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
'안드로이드 > 뷰(View)' 카테고리의 다른 글
[Android] 안드로이드 - RecyclerView 안에 RecyclerView 구현하기 (0) | 2021.12.06 |
---|---|
[Android] 안드로이드 - 리사이클러 뷰(RecyclerView) 구현 (0) | 2021.12.06 |
[Android] 안드로이드 - 리스트뷰(ListView) 구현 (0) | 2021.12.02 |
[Android] 안드로이드 - 텍스트뷰(TextView) 사용법 정리 (0) | 2021.11.30 |
[안드로이드 커스텀 리스트뷰] 클릭 이벤트 리스너 지정 android custom listview listener about click (0) | 2018.09.10 |
[안드로이드 커스텀 리스트뷰] CustomListView 구현 예제, android custom listview example (0) | 2018.09.10 |
안드로이드 키보드의 InputType정리 (0) | 2018.01.17 |
EditText에 자동 포커스 막기 및 초기 키보드 자동 실행 막기 (0) | 2018.01.17 |