2011-06-20 59 views
2

我有两个spinners在我当前的android应用程序,我想有一个默认值,如editText的android:提示能力。有没有办法这样做,但以一种不会将提示添加到填充微调器的字符串数组的方式。例如从Spinner列表中选择提示是不可能的。Android微调提示?

此外,有没有办法来检查用户是否选择了一个有效的值,如果不采取行动。我通过获取值的字符串,然后做这在我的editTexts:

if (calculator_ShutterSpeed_TempValue.equals("")){ action }

,我还可以设置微调回到它的另一个按钮,按提示值?

那么我为问的是:

  1. 微调暗示这是不可能的用户点击了微调之后重新显示?
  2. 检查用户是否从微调框中选择了一个有效值(是否选择了超出默认提示值的值)?
  3. 重新显示点击重置按钮时的提示?

回答

2

设置在微调的默认值,你必须首先设置选择setSelection(index)该索引,并通过使用SharedPreferences其保存到偏好。请检查代码以设置和加载首选项。 因此onResume()突出显示选择了索引值。

要从微调器获得值,请使用spinner.getSelectedItem()并将其转换为字符串。现在您可以将其与您的标准进行比较。

要重新显示提示,首先必须将其作为微调器中的项目,然后对OnItemSelectedListener进行注册。在这个监听器的代码中重新设置选定的索引,再次提示索引。

0

我通过使用按钮而不是微调来处理这个问题。 I have the sample project up on GitHub.

在该项目中,我显示了微调和按钮以显示它们的确看起来完全相同。除了按钮你可以设置任何你想要的初始文本。

这里的活动是什么样子:

package com.stevebergamini.spinnerbutton; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Spinner; 

public class MainActivity extends Activity { 

    Spinner spinner1; 
    Button button1; 
    AlertDialog ad; 
    String[] countries; 

    int selected = -1; 

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

     spinner1 = (Spinner) findViewById(R.id.spinner1); 
     button1 = (Button) findViewById(R.id.button1); 

     countries = getResources().getStringArray(R.array.country_names); 

     // You can also use an adapter for the allert dialog if you'd like 
     // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, countries);   

     ad = new AlertDialog.Builder(MainActivity.this).setSingleChoiceItems(countries, selected, 
       new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          button1.setText(countries[which]); 
          selected = which; 
          ad.dismiss(); 

         }}).setTitle(R.string.select_country).create(); 


     button1.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       ad.getListView().setSelection(selected); 
       ad.show();    
      }}); 

    } 

}