android微调器中的问题

时间:2013-01-29 07:01:54

标签: android spinner android-spinner

我想根据spinner的值选择显示消息。 所以我使用了以下代码。

sp=(Spinner)findViewById(R.id.spinner1);
        String ar[]={"hello","abc"};
        ArrayAdapter<String> adapt=new ArrayAdapter<String>(SpinnerEampleActivity.this, android.R.layout.simple_spinner_dropdown_item,ar);
        sp.setAdapter(adapt);
        sp.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) 
        {
            if(arg2==0)
            {
            AlertDialog.Builder alert=new AlertDialog.Builder(SpinnerEampleActivity.this);
            alert.setMessage("hello");
            alert.show();
            }
            else
            {
                AlertDialog.Builder alert=new AlertDialog.Builder(SpinnerEampleActivity.this);
                alert.setMessage("abc");
                alert.show();
            }

        }

但如果我从微调器中选择已经选择的值,我没有收到任何消息。 可以帮助我解决问题。 提前谢谢。

3 个答案:

答案 0 :(得分:0)

当您再次单击当前选定的项目时,它无法触发任何事件。所以你无法捕捉setOnItemSelectedListener微调器来响应。

您需要创建自定义微调器适配器来处理已选择项目的点击。

答案 1 :(得分:0)

我尝试了以下方法来获取自定义微调器

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, selects)
                    {
                       @Override
                       public View getDropDownView(int position, View convertView, ViewGroup parent)
                       {
                        View v = convertView;
                         if (v == null) 
                           {
                             Context mContext = this.getContext();
                             LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                              v = vi.inflate(R.layout.spinner_item, null);
                           } 
                         final TextView tv=(TextView) v.findViewById(R.id.custopspin);
                         int pos=position;
                         if(pos==0)
                         {
                             tv.setText("hello");
//                           sy
                         }
                         else if(pos==1)
                         {
                             tv.setText("abc");
                         }
                         else
                         {
                             tv.setText("hi");
                         }
                         tv.setTextColor(Color.RED);
                         tv.setClickable(true);
                         tv.setOnClickListener(new OnClickListener() 
                         {

                        @Override
                        public void onClick(View arg0) 
                        {
                            if(tv.getText().toString().equals("hello"))
                            {
                                                                    }
                            else if(tv.getText().toString().equals("hi"))
                            {

                            }
                            else
                            {
                            }
                        }
                     });    
                     return v;  
                    }              
                 };     
        timeslot.setAdapter(spinnerAdapter);

如上面评论中所述,选择该选项后并未隐藏。

答案 2 :(得分:0)

   sp=(Spinner)findViewById(R.id.spinner1);
    String ar[]={"hello","abc"};
    ArrayAdapter<String> adapt=new ArrayAdapter<String>(SpinnerEampleActivity.this, android.R.layout.simple_spinner_dropdown_item,ar);
    sp.setAdapter(adapt);
    sp.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int position, long arg3) 
    {
 AlertDialog.Builder alert=new AlertDialog.Builder(SpinnerEampleActivity.this);
        alert.setMessage(ar[position]);
        alert.show();

    }
       @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });

这就是.........