安卓 Spinner 执行 performClick onItemSelected

6

我在使用一个spinner时遇到了一点问题。

我创建了一个Spinner,当用户点击一个按钮时,它会显示出来。这个Spinner显示得很好,但是当应该调用onItemSelected方法时,却没有任何反应。

以下是代码:

public void setUpSpinner(){
    spinner = new Spinner(this);
    CustomArrayAdapter<String> adapter = new CustomArrayAdapter<String>(this,     android.R.layout.simple_spinner_item, getAsStrings());
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);
}

public void onClick(View view) {       
    spinner.performClick();
}

public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {        
    String getName = (String) spinner.getSelectedItem();
    getListFromName(getName);
}

有人知道这里出了什么问题吗?

谢谢大家。

3个回答

19

通过在我的 xml 中添加一个高度和宽度都设置为零的 Spinner,解决了这个问题。


@Bastaix,您能告诉我如何声明Spinner吗? - hemanth kumar
我的情况下不起作用。之后你是怎么创建旋转器的?是使用1. = new Spinner(...) 还是使用 findViewById(...)? - Shirish Herwade
1
终于成功了。必须在XML中为Spinner添加android:spinnerMode="dialog"。 - Shirish Herwade
太棒了,从未想过那个。 - Ammar Hussein

0
为什么在设置中有"spinner = new Spinner(this)"?
你的布局XML中肯定已经有了一个Spinner,然后你只需要这样做:spinner = (Spinner) findViewById(R.id.WHATEVER_THE_ID_IS_IN_THE_XML);,所以你不需要一个new
P.S. 这是我在XML布局中定义Spinner的方式。
<Spinner
android:id="@+id/SPINNER_ID"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal" />

0

这看起来足够像教程,所以请参考一下。见下文:

我没有看到这个,但是主类是否实现了OnItemSelectedListener?此外,您需要在主类体内的onCreate()中实例化Spinner。

这行代码需要放在onCreate()中;

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

Spinner在onCreate中实例化,其中调用了setUpSpinner()方法,并且该类实现了onItemSelectedListener接口。 - Bastaix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接