【问题标题】:get Spinner click event获取 Spinner 点击事件
【发布时间】:2018-03-12 12:05:58
【问题描述】:

我有两个微调器,城市和社区,当我选择一个城市时,它会填充社区列表。但我想当我单击社区微调器并且城市为空时显示消息或警报对话框。 我试图在第二个微调器上使用 ontouchevent,但它不起作用。 我正在使用自定义微调器 com.toptoche.searchablespinnerlibrary.SearchableSpinner 感谢您的帮助

        neighborhoodSpinner.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    Toast.makeText(getApplicationContext(),"city emty",Toast.LENGTH_LONG).show();
                }
                return false;
            }
        });

【问题讨论】:

标签: android spinner


【解决方案1】:

你为什么不改用 onClickListener 呢?

s.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

【讨论】:

  • 您的代码会出现运行时异常:不要为 AdapterView 调用 setOnClickListener。您可能想要 setOnItemClickListener 代替
【解决方案2】:
cityspinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        {
            String selectedItemcity = parent.getItemAtPosition(position).toString();

        } // to close the onItemSelected
        public void onNothingSelected(AdapterView<?> parent) 
        {

        }           
    });


neighborhoodSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        {
            String selectedItemneighbour = parent.getItemAtPosition(position).toString();
            if(selectedItemcity.equals("your item name")) //Also you can check previous spinners position here if 0 then show popup or dilaog
            {

                 // do your stuff
            }
        } // to close the onItemSelected
        public void onNothingSelected(AdapterView<?> parent) 
        {

        }           
    });

【讨论】:

    【解决方案3】:

    使用setOnItemSelectedListener 获取微调器项目选择侦听器。

    mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
                // Write your code here
    
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
    
            }
        });
    

    【讨论】:

      【解决方案4】:

      这取决于您的微调器是否具有默认值以表示无意义。 例如,如果您的微调器的城市值为“请选择一个城市”或类似的值,则不必如此。

      您的微调器可能已经在填充时选择了一个城市。

      如果“请选择一个城市”是一个选项,此代码可能会有所帮助:

         Spinner city= findViewById(R.id.spinner_city);
         Spinner neighborhood = findViewById(R.id.spinner_neighborhood);
      
         neighborhood.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  if(city.getSelectedItem().toString().equals("Please select a city")){
                      Toast.makeText(MyActivity.this, "Please select a city first", Toast.LENGTH_SHORT).show();
                  }else{
                      // do nothing
                  }
              }
          });
      

      【讨论】:

      • 我不能使用 onClickListener 它给了我运行时异常:运行时异常:不要为 AdapterView 调用 setOnClickListener。您可能想要 setOnItemClickListener 代替
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多