【问题标题】:Android spinner, OnItemSelectedListener is not called when selecting the same item?Android spinner, OnItemSelectedListener 选择同一个item时不调用?
【发布时间】:2018-11-10 20:02:56
【问题描述】:

出于某种特殊原因,即使用户选择了相同的项目,我也需要调用我的spinnerOnItemSelectedListener,但通常不会。所以我不知道这怎么可能! 有什么技巧或库可以解决我的问题吗?

【问题讨论】:

  • 你可以使用OnItemClickListener事件代替OnItemSelectedListener
  • 听起来OnItemClickListener 不适合与Android 的Spinner 一起使用,因为当我这样做时,应用程序崩溃了。 @Farrokh
  • 你有更多的微调器吗???
  • 是的,我还有其他小部件。但我认为这与他们的存在无关。看,没有问题需要解决。这是一个需要解决的问题。 @hamidkeyhani
  • 我很抱歉我的错误答案,但你可以试试我在下面发布的新答案

标签: android spinner


【解决方案1】:

好的
你可以使用addOnLayoutChangeListener

yourspinner.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
        Toast.makeText(context, "item is : " + yourspinner.getSelectedItemPosition(), Toast.LENGTH_SHORT).show();
    }
});

【讨论】:

  • 老实说没有帮助。但它让我想到了以某种方式获得Spinner 弹出视图然后popup.addOnLayoutChangeListener!但是如何获得Spinner 弹出窗口? @Farrokh
  • 我尝试了这段代码并做了你需要的,每次微调器布局发生变化时,屏幕上都会出现一个吐司,包括选择新项目或单击同一项目,你到底需要什么?
  • 对不起。你说的对!这正是我想要的:)
【解决方案2】:

确定上下文。你可以作为上下文。

  • 这个

  • MainActivity.this

  • getApplicationContext()

如果您在 Fragment 中使用微调器,那么您可以将上下文用作

getActivity()

String selectedItem;
String data[]={"Australia","Delhi","Agra","Mumbai","America","Tanzania","Arizona"};
spinner=(Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> ad=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,data);
       spinner.setPrompt("Select State");
       spinner.setAdapter(ad);
    String val=spinner.getSelectedItem().toString();

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           @Override
           public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
               String val=spinner.getSelectedItem().toString();

               selectedItem=data[i];

                 Toast.makeText(MainActivity.this, " "+selectedItem, Toast.LENGTH_SHORT).show();

           }

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

           }
       });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多