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();
}
}
6条答案
按热度按时间u59ebvdq1#
要打开Spinner,只需调用它的performClick()方法。
请记住,您只能从UI线程调用此方法。如果需要从单独的线程打开Spinner,则应在UI线程中创建一个Handler,然后从第二个线程向处理程序发送一个调用performClick()的可运行对象。
此示例使用的资源可以在here中找到。
eqfvzcg82#
要显示
Spinner
项,只需调用它的performClick()
方法。f5emj3cl3#
您不需要使用2个runnables,如上一个示例所示。
这就足够了:
yvfmudvl4#
用这个就行了
stszievb5#
您需要onResume中的调用,但在onCreate中此调用不起作用。
js81xvg66#
可以在UI线程完成其当前操作后调用
performClick()
。如果不使用post {}
,则可能看不到Spinner打开。