공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
안드로이드에서 스피너라는 어댑터를 제공합니다.
스피너가 무엇인가 하면, 아래 [갤러리 ▼] 요 녀석 입니다.
목록을 가려놨다가 탭하여 목록을 열고
원하는 값을 볼 수 있는 거라고 생각하면 됩니다.
xml 에선 아래처럼 선언합니다.
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/gallerySpinner"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
요렇게만 추가하면 왼쪽 값을 비어있고 [빈공간 ▼] 이렇게만 표시가 되는데요.
여기서 목록에 들어갈 값들을 추가해주어야 하는데, 이값들을 entry 라고 하며
xml에서는 arrays.xml 에 선언된 배열을 추가할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="brand_name">
<item>Samsung</item>
<item>Apple</item>
<item>LG</item>
<item>Sony</item>
<item>Nokia</item>
</string-array>
</resources>
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/gallerySpinner"
android:entries="@array/brand_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
그리고 동적으로 추가하는 방법도 있는데요.
갤러리 폴더처럼 미리 값을 개발하는 과정에서 정적으로 넣는게 아니라
각 사용자마다 폴더 이름과 수가 다른 경우처럼 동적으로 받아올 때 사용합니다.
갤러리 폴더 목록가져오기.
2019/07/02 - [안드로이드] - 안드로이드 갤러리 폴더 목록 가져오기
이전 포스팅에서 가져온 갤러리 폴더 목록을 동적으로 추가하는 방법입니다.
먼저 item.xml 이 필요합니다.
폴더 이름만 있으면 되니 간단하게 AppCompatTextView만 넣었씁니다.
item_folder.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.AppCompatTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:textSize="16sp">
</androidx.appcompat.widget.AppCompatTextView>
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String[] folders = file.list();
ArrayList<String> folderList = new ArrayList<>();
for(String folder : folders) {
Collections.addAll(folderList, folder);
}
folderList.add(0, "갤러리");
binding.gallerySpinner.setAdapter(new ArrayAdapter<>(this, R.layout.item_folder, folderList));
요렇게 동적으로 추가해주면 되겠습니다.
folders 문자열 배열을 folderList 대신 넣어줘도 됩니다.
각 entry를 클릭했을 때 동작을 추가하려면 setOnItemClickListener에 동작을
추가해주면 됩니다.
binding.gallerySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
이상입니다. 감사합니다.
'안드로이드' 카테고리의 다른 글
안드로이드 이미지 로딩 라이브러리 Glide (0) | 2019.07.03 |
---|---|
안드로이드 프로젝트 전체에서 검색 단축키 (0) | 2019.07.02 |
안드로이드 갤러리 폴더 목록 가져오기 (0) | 2019.07.02 |
안드로이드 TabLayout textsize 변경하기 (1) | 2019.06.25 |
안드로이드 프래그먼트 안에 프래그먼트 Android fragment in fragment (0) | 2019.06.21 |