Android OnItemSelectedListener不适用于微调器
我有一个使用自定义ArrayAdapter设置的微调器: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
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" />