【问题标题】:How to get Spinner selected item value to string?如何将 Spinner 选定的项目值转换为字符串?
【发布时间】:2012-04-26 10:46:55
【问题描述】:

我有 5 个微调器。为了使它总结到这一点。

这是 xml 中的 Spinner

<Spinner
            android:id="@+id/text_interested"
            android:layout_span="2"
            android:layout_width="wrap_content"
            android:layout_height="60px"
            android:entries="@array/interestedarrays"
            android:prompt="@string/interestedprompt" />

这是 Java 中的 Spinner

submitbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
interested.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        public void onItemSelected(
                                AdapterView<?> adapterView, View view,
                                int i, long l) {
                            interesting = interested.getItemAtPosition(i).toString();
                        }

                        public void onNothingSelected(
                                AdapterView<?> adapterView) {

                        }
                    });
    }
});

此处解释:

页面有一个按钮。按下此按钮将从微调器中读取数据。我用这个检查了输出

System.out.println(interested.getItemAtPosition(i).toString());

它没有给我任何东西,甚至没有。

如何检索该值并将其字符串化?

【问题讨论】:

  • 我敢肯定,每当用户单击按钮时,您都希望从微调器中选择项目
  • 在按钮的 onClick 外部设置 setOnItemSelectedListener 并在 Onclick 方法内部使用这个 Interest.getSelectedItem().toString();
  • 谢谢,我的错误是将监听器放在按钮监听器中,为什么没有响应
  • 欢迎 :) 探索 api 演示......你可以在那里获得更好的例子

标签: android android-spinner


【解决方案1】:

试试这个:

String text = mySpinner.getSelectedItem().toString();

这样您可以获得不同 Spinner 的价值。

【讨论】:

    【解决方案2】:
    String Text = mySpinner.getSelectedItem().toString();
    

    mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Object item = parent.getItemAtPosition(position);
        }
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
    

    【讨论】:

    • 但是如何获得第 0 项?!
    【解决方案3】:

    您可以通过使用从 Spinner 中获取所选项目,

    interested.getSelectedItem().toString();
    

    【讨论】:

      【解决方案4】:

      试试这个

       final Spinner cardStatusSpinner1 = (Spinner) findViewById(R.id.text_interested);
          String cardStatusString;
          cardStatusSpinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
      
              @Override
              public void onItemSelected(AdapterView<?> parent,
                      View view, int pos, long id) {
                  cardStatusString = parent.getItemAtPosition(pos).toString();
              }
      
              @Override
              public void onNothingSelected(AdapterView<?> arg0) {
                  // TODO Auto-generated method stub
      
              }
          });
      
       final Button saveBtn = (Button) findViewById(R.id.save_button);
          saveBtn .setOnClickListener(new OnClickListener() {
      
              @Override
              public void onClick(View arg0) {
                  // TODO Auto-generated method stub
      
                  System.out.println("Selected cardStatusString : " + cardStatusString ); //this will print the result
              }
          });
      

      【讨论】:

        【解决方案5】:

        如果您的 Spinner 由 SQLite 游标填充,那么解决方案是:

        Spinner mySpin = (Spinner) findViewById(R.id.myspin);
        mySpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                   SQLiteCursor item = (SQLiteCursor) parent.getItemAtPosition(position);
                   String value = String.valueOf(item.getString(0));
                   Toast.makeText(getApplicationContext(), "The option is:" + value , Toast.LENGTH_SHORT).show(); 
         }
        

        PS:在item.getString(0) -> 0 是你想要获取的光标上列的索引。

        【讨论】:

        • 效果很好。如何在 onItemSelected 成员之外使用“值”?
        【解决方案6】:

        用 Kotlin 获取选中的项目:

        spinner.selectedItem.toString()
        

        【讨论】:

          【解决方案7】:

          除了建议,

          String Text = mySpinner.getSelectedItem().toString();
          

          你可以的,

          String Text = String.valueOf(mySpinner.getSelectedItem());
          

          【讨论】:

            【解决方案8】:

            因为 Android 开发的最新语言是 Kotlin。下面是我们如何在 Kotlin 中使用匿名对象来做到这一点。

            spinnerName?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
                override fun onNothingSelected(parent: AdapterView<*>?) {
                   println("Nothing Selected")
                }
            
                override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                   val selectedString = yourList[position]
                }
            
            }
            

            【讨论】:

              【解决方案9】:

              当您从微调器中选择任何值时,您将获得选定的值,

              interested.getSelectedItem().toString();
              

              【讨论】:

                【解决方案10】:

                我认为您希望在单击按钮时选择微调器的项目..

                试试getSelectedItem():

                spinner.getSelectedItem()
                

                【讨论】:

                  【解决方案11】:

                  最好的方法是:-

                  String selectedItem = spinner.getSelectedItem().toString();
                  

                  您可以在此处参考文档:Spinners

                  【讨论】:

                    【解决方案12】:

                    试试这个

                    sp1 = String.valueOf(spinner.getSelectedItem());
                    

                    【讨论】:

                      【解决方案13】:

                      通过为您的适配器对象实现 SpinnerAdapter,我使用 interested.getItem(i).toString()

                      【讨论】:

                        【解决方案14】:
                            spinnerType = (AppCompatSpinner) findViewById(R.id.account_type);
                            spinnerType.setPrompt("Select Type");
                        
                            spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                @Override
                                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                    TypeItem clickedItem = (TypeItem) parent.getItemAtPosition(position);
                                    String TypeName = clickedItem.getTypeName();
                                    Toast.makeText(AddAccount.this, TypeName + " selected", Toast.LENGTH_SHORT).show();
                                }
                        
                                @Override
                                public void onNothingSelected(AdapterView<?> parent) {
                        
                                }
                            });
                        

                        【讨论】:

                          猜你喜欢
                          • 2017-10-09
                          • 1970-01-01
                          • 1970-01-01
                          • 2011-09-10
                          • 2019-04-04
                          • 1970-01-01
                          • 2020-11-05
                          • 2014-10-19
                          • 2012-07-14
                          相关资源
                          最近更新 更多