我有一个使用自定义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微调器;语句在上面作为类变量):
this.spinner = (Spinner) findViewById(R.id.spinner1);
CustomAdapter<String> adapter = new CustomAdapter<String>(this,
android.R.layout.simple_spinner_dropdown_item, new String[] {"Set Homepage"});
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
我已经实现了OnItemSelectedListener:
public class MainActivity extends Activity implements OnItemSelectedListener{...}
并拥有所需的回调:
//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();
}
微调器的xml:
<Spinner
android:id="@+id/spinner1"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/ic_menu_moreoverflow_holo_dark" />
问题是,每当从微调器中选择一个项目时,即使在我删除了上面所有条件之后也没有任何反应。
答案 0 :(得分:4)
OnItemSelectedListener不适用于微调器
因为您在Adapter中只传递了一个默认选中的项目。在启动您的应用程序时,您可能会收到Toast消息。
因此,请添加更多元素来检查OnItemSelectedListener
行为。