Android : 배열에서 프로그래밍 방식으로 스피너 만들기


198

나는 안드로이드를 처음 접했고 프로그래밍 방식으로 스피너를 만들고 배열의 데이터를 공급하려고하지만 Eclipse는 처리 할 수 ​​없다는 경고를줍니다.

내가 가진 것은 다음과 같습니다.

이 ArrayList는 스피너에 있어야 할 요소를 보유합니다 (나중에 파일에서 채워짐).

ArrayList<String> spinnerArray = new ArrayList<String>();

이것은 스피너를 만들어야하는 사이트에서 찾은 코드입니다.

Spinner spinner = new Spinner(this);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,
                spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

이제 두 번째 줄 (ArrayAdapter ...)은 Eclipse에서 경고를 제공합니다 "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized".

경고 일 뿐이며 앱이 올바르게 실행되는 것처럼 보이지만 여전히 무엇이 잘못되었는지 이해하고 수정하고 싶습니다. 모든 힌트를 부탁드립니다.

인사말, Select0r

답변:


388

ArrayAdapter<String> 작동해야합니다.

즉 :

Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
            (this, android.R.layout.simple_spinner_item,
           spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
                                                     .simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter); 

나는 그것을 시도했지만 오류가 약간 변경됩니다 :) Type safety: The expression of type ArrayAdapter needs unchecked conversion to conform to ArrayAdapter<String>
Select0r

2
게시물을 편집하는 동안 빠르게 댓글을 달았습니다 <String>.
Select0r

23
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(activity, R.layout.simple_spinner_item); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);일부 장치에서는 스피너에 사용 또는 라디오 버튼이 표시 될 수 있습니다.
Ken

당신 answere은 도움이되었다 당신은 내가 두 스피너를 사용하고 있다면 말해 기쁘게 할 수 있으며 1 회는 다음 두 번째 작업을해야한다면 내가 원하는

1
또한 안드로이드 문서 에서이 방법을 설명합니다 : developer.android.com/guide/topics/ui/controls/spinner.html
WOUNDEDStevenJones

109

Array 와 같은 방식으로

// Array of choices
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};

// Selection of the spinner
Spinner spinner = (Spinner) findViewById(R.id.myspinner);

// Application of the Array to the Spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item, colors);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);

내 배열은 정적이 아닌 루프에서 가져 오기 때문에 ArrayList를 사용 하여이 작업을 수행했습니다.
Jacksonkr

61

이것은 나를 위해 일한 문자열 배열 라는 이름의 shoes프로젝트 자원에서로드 :

Spinner              spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes);
ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(
                     this,
                     android.R.layout.simple_spinner_dropdown_item, 
                     getResources().getStringArray(R.array.shoes));
spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter);

이건 내 리소스 파일 (이다 res/values/arrays.xml와) 문자열 배열 이름 shoes:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="shoes">
        <item>0</item>
        <item>5</item>
        <item>10</item>
        <item>100</item>
        <item>1000</item>
        <item>10000</item>
    </string-array>
</resources>

이 방법을 사용하면 다국어를 쉽게 만들 수 있습니다 (필요한 경우).


36

이것은 실제로 나를 위해 일했다

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, spinnerArray);
    spinnerArrayAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );

    spinner = (Spinner) findViewById( R.id.spinner );
    spinner.setAdapter(spinnerArrayAdapter);

6
당신이 이것을 Spinner spinner = new Spinner(this);할 때 이것의 목적은 무엇입니까spinner = (Spinner) findViewById( R.id.spinner );
mr5

왜 오류 : ArrayAdapter (<anonymous OnItemSelectedListener>, int, DetailData) 생성자에 적합한 생성자를 찾을 수 없습니다. ArrayAdapter.ArrayAdapter (Context, int, int, List <String>) 적용 할 수 없습니까?
user151968

6

이 작업은 나를 위해 :-

String[] array = {"A", "B", "C"};
String abc = "";


Spinner spinner = new Spinner(getContext());
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);

조각을 사용하고 있습니다.


3

Kotlin 언어에서는 다음과 같은 방법으로 수행 할 수 있습니다.

val values = arrayOf(
    "cat",
    "dog",
    "chicken"
)

ArrayAdapter(
    this,
    android.R.layout.simple_spinner_item,
    values
).also {
    it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner.adapter = it
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.