혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

안드로이드 스튜디오, Spinner 활용하여 만들어보기

간지뽕빨리턴님 2020. 5. 14. 17:32
반응형

안드로이드스튜디오,스피너,spinner,과제,앱,어플,모바일,아이폰,대학생활,코딩일기

스피너를 활용하여 만들어보자!

과제 일시 : 2020 - 05 - 14

오늘은 저번과 비슷하게 Spinner를 활용하여, 앱을 만들려고 합니다. Strings.xml에 먼저 아이템을 미리 만들어 놓고 어플을 실행하면 spinner를 선택하면 해당 선택한 아이템을 토스트 메세지로 출력하여 알려줄 수 있게 했습니다.

<실행화면>

<소스 코드>

* activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".MainActivity">

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="0dp"
        android:layout_height="80dp"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <Spinner
                android:id="@+id/spinner"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.21" />

            <Spinner
                android:id="@+id/spinner2"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.21" />

            <Button
                android:id="@+id/btn_refresh"
                android:layout_width="120dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.21"
                android:text="선정" />
        </LinearLayout>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

* MainActivity.java
package com.example.spinneraddr;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    ArrayAdapter<CharSequence> adapterCity, adapterGu;
    String choiceCity;
    String choiceGu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Spinner spinnerCity = (Spinner) findViewById(R.id.spinner);
        final Spinner spinnerGu = (Spinner) findViewById(R.id.spinner2);
        final Button btn_refresh = (Button) findViewById(R.id.btn_refresh);

        adapterCity = ArrayAdapter.createFromResource(this, R.array.spinner_city, android.R.layout.simple_dropdown_item_1line);
        adapterCity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinnerCity.setAdapter(adapterCity);

        spinnerCity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if (adapterCity.getItem(position).equals("1반")) {
                    choiceCity = "1반";
                    adapterGu = ArrayAdapter.createFromResource(MainActivity.this, R.array.spinner_gu_1ban, android.R.layout.simple_dropdown_item_1line);
                    adapterGu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                    spinnerGu.setAdapter(adapterGu);
                    spinnerGu.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                            choiceGu = adapterGu.getItem(position).toString();
                        }

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

                        }
                    });
                } else if (adapterCity.getItem(position).equals("2반")) {
                    choiceCity = "2반";
                    adapterGu = ArrayAdapter.createFromResource(MainActivity.this, R.array.spinner_gu_2ban, android.R.layout.simple_dropdown_item_1line);
                    adapterGu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                    spinnerGu.setAdapter(adapterGu);
                    spinnerGu.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                            choiceGu = adapterGu.getItem(position).toString();
                        }

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

                        }
                    });
                    btn_refresh.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Toast.makeText(MainActivity.this, "선정 된 학생은 " + choiceCity + "소속이고, " + choiceGu + "입니다", Toast.LENGTH_SHORT).show();
                        }
                    });


                }

            }

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

            }
        });
    }
}

* strings.xml
<resources>
    <string name="app_name">SpinnerAddr</string>
    <string-array name="spinner_city">
        <item>1반</item>
        <item>2반</item>
    </string-array>
    <string-array name="spinner_gu_1ban">
        <item>김구구</item>
        <item>김동동</item>
        <item>박응아</item>
        <item>전기긱</item>
        <item>주정차</item>
        <item>최강창민</item>
    </string-array>
    <string-array name="spinner_gu_2ban">
        <item>장종찬</item>
        <item>최영환</item>
        <item>권순성</item>
        <item>김치밥</item>
        <item>김붕붕</item>
        <item>페라리</item>
    </string-array>
</resources>

Okay ! 좋아 ! 실행이 잘된다 :D