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 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();
            }

        }

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

4

3 回答 3

0

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

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

于 2013-01-29T07:48:43.080 回答
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);

正如上面评论中所说,选择该选项后没有隐藏。

于 2013-01-29T08:14:45.777 回答
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) {
        }
    });

就这样.........

于 2016-11-22T07:16:33.830 回答