【问题标题】:setOnItemSelectedListener on custom spinner adapter doesnt work自定义微调器适配器上的 setOnItemSelectedListener 不起作用
【发布时间】: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


【解决方案1】:

试试这个:

spinAdmin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

【讨论】:

  • 肯定还有别的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多