Android

[Android-Java] Spinner를 이용해 드롭다운 리스트 구현하기

기시미 2021. 8. 25. 01:21

개발환경 : Windows

개발언어 : Java

사용 라이브러리 :  Databinding (데이터 결합 라이브러리)

 

안녕하세요 오늘은 Spinner에 대해 알아보겠습니다.


Spinner란?

저장된 리스트에서 드롭다운 메뉴를 통해 하나의 값을 선택할 수 있는 방법을 제공합니다.

이메일 주소 입력이나 핸드폰 번호 입력 시 자주 쓰이는 디자인입니다.

 

1. xml에 Spinner 생성

레이아웃 안에 Spinner를 생성해줍니다.

	<Spinner
            android:id="@+id/home_spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"/>

2. value.xml에 Spinner에 넣을 리스트 생성

value.xml ->strings.xml에서  Spinner에 들어갈 리스트를 작성해줍니다.

<resources>
    <string name="app_name">StarBooks</string>
    <string-array name="spinner_array">
        <item>최신순</item>
        <item>좋아요순</item>
        <item>리뷰순</item>
    </string-array>
</resources>

3. Activity에서 어댑터 생성과 연결, 리스너 구현

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding= DataBindingUtil.setContentView(this, R.layout.activity_main);

        //어댑터 생성
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array,R.layout.spinner_layout);
        //드롭다운뷰 연결
        adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        //UI와 연결
        binding.homeSpinner.setAdapter(adapter);
    }

    //Spinner Listener 
    public void spinnerListener() {
        binding.homeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            
            //선택 시 작동기능
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {
                    case 1:
                        break;
                    case 2:
                        break;
                    case 3:
                        break;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }


}

 

** R.layout.spinner_layout과 R.layout.support_simple_spinner_dropdown_item은 안드로이드 스튜디오에서 기본으로 제공되는 레이아웃입니다.

 

** Spinner를 커스텀으로 적용하고 싶다면 R.layout.spinner_layout에서 원하시는대로 변경하시면 됩니다.

(저는 폰트 적용했습니다 ㅎㅁㅎ)


완성!