【问题标题】:Set variable after selecting spinner item - Android选择微调器项目后设置变量 - Android
【发布时间】:2012-01-29 05:02:39
【问题描述】:

我想在微调器中挑选项目后设置一个变量。由于我是 Java 新手,我不知道最好的方法是什么。我尝试在选择项目后对其进行测试,但无法使其正常工作。 必须创建一个新变量,并且值必须是 0.5(初学者)、1 (高级)和 1.5(专业)。只要我正在开发我的应用程序,我还希望它在选择项目时显示带有变量值的 toast 消息。

希望有人可以帮助我,因为我现在陷入困境。

我的 Java 代码:

public class AlbumsActivity  extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.albums_layout);

    Spinner spinner = (Spinner) findViewById(R.id.spinner_experience);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.experience_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    class MyOnItemSelectedListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            Object test = spinner.getSelectedItem();
            if "Pro".equals(test) {
                // Do something
                Toast.makeText(parent.getContext(), "The planet is " +
                    parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
            }
        }

        public void onNothingSelected(AdapterView<?> parent) {
            // Do Nothing
        }
    }

    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}   

布局xml

    <LinearLayout
    android:orientation="vertical"
    android:padding="10dip"
    android:id="@+id/linearLayout_Experience"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="@string/experience_prompt" />
    <Spinner 
        android:id="@+id/spinner_experience"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:prompt="@string/experience_prompt" />
</LinearLayout>

还有我的微调器弦:

<resources>

<string name="experience_prompt">Select your experience</string>
<string-array name="experience_array">
    <item>Beginner</item>
    <item>Advanced</item>
    <item>Pro</item>
</string-array>

【问题讨论】:

    标签: android variables spinner toast


    【解决方案1】:

    尝试用String test = spinner.getSelectedItem().toString();替换Object test = spinner.getSelectedItem();

    parent.getItemAtPosition(pos).toString() 也将返回 Spinner 内视图的 ID,而不是文本。要获取此文本,请使用:

    TextView TV=parent.getItemAtPosition(pos);
    

    并将parent.getItemAtPosition(pos).toString() 替换为TV.getText().toString();

    【讨论】:

      【解决方案2】:

      试试这个:

      import android.app.Activity;
      import android.view.*;
      import android.os.Bundle;
      import android.widget.AdapterView;
      import android.widget.AdapterView.OnItemSelectedListener;
      import android.widget.ArrayAdapter;
      import android.widget.Spinner;
      import android.widget.Toast;
      
      public class AlbumsActivity extends Activity {
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
      
              final Spinner spinner = (Spinner) findViewById(R.id.spinner_experience);
              ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                      this, R.array.experience_array, android.R.layout.simple_spinner_item);
              adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
              spinner.setAdapter(adapter);
      
      
              spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
                  @Override
                  public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                      Object test = spinner.getSelectedItem();
                      Toast.makeText(AlbumsActivity.this, "The planet is " +
                              spinner.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
                  }
      
                  @Override
                  public void onNothingSelected(AdapterView<?> parentView) {
                      // your code here
                  }
      
              });
      
          }
      }
      

      【讨论】:

        【解决方案3】:

        在我的脑海中(可能是拼写错误和其他错误):

        public void onItemSelected(AdapterView<?> parent,
                    View view, int pos, long id) {
                 if(pos == 0) {
                    // Beginner
                    Toast.makeText(parent.getContext(), "Beginner = 0.5", Toast.LENGTH_LONG).show();
                } else if(pos == 1) {
                    // Advanced
                    Toast.makeText(parent.getContext(), "Advanced = 1", Toast.LENGTH_LONG).show();
                } else {
                    // Pro
                    Toast.makeText(parent.getContext(), "Pro = 1.5", Toast.LENGTH_LONG).show();
                }
            }
        

        您可以使用 HashMap 对其进行大量修饰,以保存您在此处建议的不同级别的键:值对,但如果您只有三个级别,那么这应该可以正常工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-07
          • 1970-01-01
          相关资源
          最近更新 更多