728x90
펼쳐지는 메뉴 형식을 드롭다운이라고 부르고
그걸 안드로이드에서는 스피너라고 함.
res -> values 폴더에서 new : values resource 파일눌러서 array파일 만들어줌
array.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="test">
<item>
촬리의 드롭다운
</item>
<item>
오잉
</item>
<item>
아 눈아프다
</item>
<item>
이러다가 안구건조증
</item>
<item>
걸리는거 아잉교
</item>
</string-array>
</resources>
activity.xml
가서 데이터 연동해줌
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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">
<Spinner
android:id="@+id/spinner"
android:layout_width="150dp"
android:layout_height="40dp"
android:entries="@array/test">
</Spinner>
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="드롭다운 결과"/>
</LinearLayout>
여태 사용했떤 setonclicklistener와 다른 새로운개념이 나타났다.
※ 스피너는 이미 선택된 아이템이 보이는 뷰와 아이템을 선택하기 위해 보이는 뷰가 서로 다릅니다. 따라서 두 개의 뷰가 있어야 합니다.
> setDropDownResource : 아이템을 선택하기 위해 보이는 뷰
> setOnItemSelectedListener : 이미 선택된 아이템이 보이는 뷰
Main.js
package com.example.spinnerexample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private TextView tv_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner)findViewById(R.id.spinner);
tv_result = (TextView)findViewById(R.id.tv_result);
//click이 아니라 selecter
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
//항목이 선택될때
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//현재 리스트뷰 아이템을 클릭했을때 리스트메뉴에서 현재포지션에 있는 값을 가져와라. textview는 곧, 스트링값이므로 변환해줘야함.
tv_result.setText(parent.getItemAtPosition(position).toString());
}
//항목이 해제될때
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
결과
728x90
'✍2021,2022 > app(android studio)' 카테고리의 다른 글
앱만들기.22(뒤로가기 두번눌러 앱종료) (0) | 2021.07.21 |
---|---|
앱만들기.21(MP3) (0) | 2021.07.21 |
앱만들기.18(FCM푸시알림) (0) | 2021.07.19 |
앱만들기. 17(MediaRecorder)동영상 녹화 (0) | 2021.07.19 |
앱만들기 .16(Service 백그라운드 음악) (0) | 2021.07.19 |