【发布时间】:2015-01-14 22:51:48
【问题描述】:
大家好,希望你们能帮助我,我有一个自定义的 ArrayAdapter 用于我的微调器,我将适配器设置在 onPostExecute() 中的 AsyncTask 中。问题是当我调用setOnItemSelectedListener() 时,它无法识别点击事件。我的微调器就像一个对话框,它工作正常,项目列表显示在弹出微调器中,但项目选择器不起作用。我想这是因为我错过了setOnItemSelectedListener() 中的上下文,但不确定。
这是我的代码:
onPostExecute:
protected void onPostExecute(String result){
pDialog.dismiss();
spinAdmin.setAdapter(new MyAdapter(getApplication(), R.layout.opina_spinner_item_saf,safList));
spinAdmin.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parentView,
View view, int position, long id) {
Toast.makeText(getBaseContext(),"MyItem",
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// TODO Auto-generated method stub
}
});
}
在同一个Activity我的Adapter类中:
public class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context ctx, int txtViewResourceId, ArrayList<String> objects) {
super(ctx, txtViewResourceId, objects);
}
@Override
public View getDropDownView(int position, View cnvtView, ViewGroup prnt) {
return getCustomView(position, cnvtView, prnt);
}
@Override
public View getView(int position, View cnvtView, ViewGroup prnt) {
return getCustomView(position, cnvtView, prnt);
}
public View getCustomView(int position, View cnvtView, ViewGroup prnt) {
LayoutInflater inflater = getLayoutInflater();
View mySpinner = inflater.inflate(R.layout.opina_spinner_item_saf, prnt, false);
TextView main_text = (TextView) mySpinner .findViewById(R.id.txt_spinner_item_saf);
main_text.setText(safList.get(position));
return mySpinner;
}
}
【问题讨论】:
-
只是一个简短的说明(在这里可能没有任何意义):如果您选择最后选择的项目,那么
onItemSelected方法将不会被调用。 -
选择一个项目后对话框微调器没有关闭..任何项目都被识别
标签: android spinner onitemselectedlistener