Android OnItemSelectedListener不适用于微调器

Android OnItemSelectedListener不适用于微调器,android,spinner,listener,Android,Spinner,Listener,我有一个使用自定义ArrayAdapter设置的微调器: private static class CustomAdapter<T> extends ArrayAdapter<String> { public CustomAdapter(Context context, int textViewResourceId, String[] objects) { super(context, textViewResourceId, objects

我有一个使用自定义ArrayAdapter设置的微调器:

    private static class CustomAdapter<T> extends ArrayAdapter<String> {
    public CustomAdapter(Context context, int textViewResourceId, String[] objects) {
        super(context, textViewResourceId, objects);
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        TextView textView = (TextView) view.findViewById(android.R.id.text1);
        textView.setText("");
        return view;
    }       
并具有所需的回调:

    //spinner methods
@Override
public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) {
    // TODO Auto-generated method stub
    //if (pos == 1){
        Toast.makeText(this, "Person wants to change the homepage", Toast.LENGTH_SHORT).show();
    //}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
    //Toast.makeText(this, "Person wants to change the homepage", Toast.LENGTH_SHORT).show();

}
//微调器方法
@凌驾
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
//TODO自动生成的方法存根
//如果(位置==1){
Toast.makeText(这是“某人想要更改主页”,Toast.LENGTH_SHORT.show();
//}
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
//Toast.makeText(这是“某人想要更改主页”,Toast.LENGTH_SHORT.show();
}
微调器的xml:

            <Spinner
            android:id="@+id/spinner1"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:background="@drawable/ic_menu_moreoverflow_holo_dark" />

问题是,无论何时从微调器中选择一个项目,都不会发生任何事情,即使在我删除了所有条件之后,正如您在上面看到的那样

OnItemSelectedListener不适用于微调器

因为您在适配器中只传递一个默认选中的项。启动应用程序时,您可能会收到toast消息

因此,添加更多元素以检查
OnItemSelectedListener
行为

OnItemSelectedListener不适用于微调器

因为您在适配器中只传递一个默认选中的项。启动应用程序时,您可能会收到toast消息


因此,添加更多元素以检查
OnItemSelectedListener
行为。

如果可能,请放入整个类代码。它几乎有700行,所以是的,我不确定这会有什么帮助,老实说,你有什么想法吗?我看不出这段代码中有任何错误。可能是代码/布局的其余部分出了问题。您是否在CustomAdapter中重写了getItem()和getItemId()…我没有,但现在我重写了,没有区别,除了重写它们之外,我还应该做其他事情吗,我已经在xml中添加了声明微调器的位置。如果可能的话,请放入整个类代码。它几乎有700行,所以是的,老实说,我不确定这会有什么帮助,你有什么想法吗?我看不出这段代码有什么错误。可能是代码/布局的其余部分出了问题。您是否在CustomAdapter中重写了getItem()和getItemId()…我没有,但现在我重写了,没有区别,除了重写它们之外,我还应该做其他事情吗,我已经添加了在xml中声明微调器的位置。这一定是一个bug,只有当微调器列表中有多个成员时才会调用.onItemSelected?一旦我添加了一个虚拟元素,就会在动态包含其他成员时调用该方法。(以防它帮助其他人)它一定是一个bug,只有当微调器中的列表中有多个成员时才会调用.onItemSelected?一旦我添加了一个虚拟元素,就会在动态包含其他成员时调用该方法。(以防帮助他人)
    //spinner methods
@Override
public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) {
    // TODO Auto-generated method stub
    //if (pos == 1){
        Toast.makeText(this, "Person wants to change the homepage", Toast.LENGTH_SHORT).show();
    //}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // TODO Auto-generated method stub
    //Toast.makeText(this, "Person wants to change the homepage", Toast.LENGTH_SHORT).show();

}
            <Spinner
            android:id="@+id/spinner1"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:background="@drawable/ic_menu_moreoverflow_holo_dark" />