【问题标题】:How to retrieve value from spinner如何从微调器中检索值
【发布时间】:2017-12-20 21:07:00
【问题描述】:

我想从spinner 中检索一个值。 这是我的代码

AddCustomerAcitivity.java

public class AddCustomerActivity extends AppCompatActivity{
Spinner spinnerCustomer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_customer);

    Toolbar toolbar = (Toolbar) findViewById(R.id.add_customer_toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Add New Customer");

    fetchId();
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_category,
            android.R.layout.simple_spinner_item);
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerCustomer.setAdapter(adapter); 
}

private void fetchId() {
    spinnerCustomer = findViewById(R.id.spinner_customer);
}
}

字符串.xml

<string-array name="spinner_category">
    <item>Male</item>
    <item>Female</item>
</string-array>

acitivty_add_customer.xml

 <Spinner
    android:id="@+id/spinner_customer"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:layout_margin="10dp"/>

我没有使用数据库从spinner 中获取值。我正在使用字符串数组获取值。我想要它在 String 中的值。

【问题讨论】:

标签: java android android-spinner


【解决方案1】:

需要实现AdapterView.OnItemSelectedListener接口 之后,您可以从onItemSelected() 方法打印您的值。

示例代码:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    Spinner spinner;
    String[] sampleData = {
            "first",
            "second",
            "third",
            "fourth",
            "fifth"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = findViewById(R.id.spinner);

        spinner.setOnItemSelectedListener(this);
        ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_spinner_item, sampleData);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(aa);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(getApplicationContext(), sampleData[i], Toast.LENGTH_LONG).show();
    }

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

    }
}

【讨论】:

    【解决方案2】:

    试试这个

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

    编辑

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_category,
                android.R.layout.simple_spinner_item);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerCustomer.setAdapter(adapter);
    
    
    
    spinnerCustomer.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    String selectedItemText = (String) parent.getItemAtPosition(position);
                    // Notify the selected item text
                    Toast.makeText
                            (getApplicationContext(), "Selected : " + selectedItemText, Toast.LENGTH_SHORT)
                            .show();
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
                }
            });
    

    【讨论】:

      【解决方案3】:

      你也可以这样做。

      spinnerCustomer=(Spinner)findViewById(R.id.spinner_customer);
      String[] arrayOfStrings=getResources().getStringArray(R.array.spinner_category);
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                      android.R.layout.simple_spinner_item,arrayOfStrings);
      
      spinnerCustomer.setAdapter(adapter);
      final Spinner finalSpinnerCustomer = spinnerCustomer;
      finalspinnerCustomer.setOnItemClickListener(new AdapterView.OnItemClickListener()
      {
              @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id)
              {
                  String item = ((TextView) view).getText().toString();  
              Toast.makeText(this,"Clicked"+ item.toString(), Toast.LENGTH_SHORT).show();
              }
      });
      

      【讨论】:

        【解决方案4】:

        您必须setOnItemSelectedListener 到您的微调器才能获得微调器的select event。它将为您提供选定的位置,您可以从具有相同位置或索引的数据源中获取值。

        String[] categories = getResources().getStringArray(R.array.spinner_category);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, categories);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinnerCustomer.setAdapter(adapter);
            spinnerCustomer.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                    String selectedValue = categories[i];
                    Toast.makeText(AddCustomerActivity.this, "selected value " + selectedValue, Toast.LENGTH_SHORT).show();
                }
        
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
        
                }
            });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-05
          • 1970-01-01
          相关资源
          最近更新 更多