IT TIP

프로그래밍 방식으로 Android 앱에서 Spinner를 열 수 있나요?

itqueen 2020. 10. 13. 20:01
반응형

프로그래밍 방식으로 Android 앱에서 Spinner를 열 수 있나요?


Android 활동에서 Spinner 개체에 대한 핸들이있는 경우 프로그래밍 방식으로 spinner 옵션을 열어 사용자가 Spinner자신을 클릭하지 않았더라도 옵션을 선택하도록 할 수 있습니까?


Spinner를 열려면 performClick () 메서드 를 호출하기 만하면 됩니다.

이 메서드는 UI 스레드에서만 호출 할 수 있습니다. 별도의 스레드에서 Spinner를 열어야하는 경우 UI 스레드에 Handler 를 만든 다음 두 번째 스레드에서 performClick ()을 호출하는 실행 가능한 개체를 Handler에 보내야합니다.

package com.example.SpinnerDemo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.os.Handler;

public class SpinnerDemo extends Activity {

    private Handler h;
    private Spinner s;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        h = new Handler();

        s = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
                R.array.planets, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);

        // Open the Spinner...
        s.performClick();

        // Spawn a thread that triggers the Spinner to open after 5 seconds...
        new Thread(new Runnable() {
            public void run() {
                // DO NOT ATTEMPT TO DIRECTLY UPDATE THE UI HERE, IT WON'T WORK!
                // YOU MUST POST THE WORK TO THE UI THREAD'S HANDLER
                h.postDelayed(new Runnable() {
                    public void run() {
                        // Open the Spinner...
                        s.performClick();
                    }
                }, 5000);
            }
        }).start();
    }
}

이 예제에서 사용하는 리소스는 여기 에서 찾을 수 있습니다 .


Spinner항목 을 표시하려면 performClick()메서드 를 호출하면 됩니다.

Spinner spDeviceType = (Spinner) findViewById(R.id.spDeviceType);
spDeviceType.performClick();

이전 예제에 표시된대로 2 개의 실행 파일을 사용할 필요가 없습니다.

이것으로 충분합니다.

h.postDelayed(new Runnable() {
    public void run() {
        s.performClick();
    }
}, 5000);

이것을 사용하십시오

yourspinner.performClick();

참고 URL : https://stackoverflow.com/questions/2679804/possible-to-programmatically-open-a-spinner-in-android-app

반응형