Установить переменную после выбора элемента вращения - Android - PullRequest
1 голос
/ 28 декабря 2011

Я хочу установить переменную после того, как предмет выбран в счетчике.Поскольку я новичок в Java, я не знаю, как лучше это сделать.Я пытался протестировать элемент после его выбора, но не могу заставить его работать.Необходимо создать новую переменную, и значения должны быть 0,5 для начинающего, 1 для расширенного и 1,5 для профессионального.Пока я разрабатываю свое приложение, я также хочу, чтобы оно отображало всплывающее сообщение со значением переменной при выборе элемента.

Надеюсь, что кто-то может мне помочь, потому что я застрял на данный момент.

Мой код 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());
}   

layout 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>

Ответы [ 3 ]

0 голосов
/ 28 декабря 2011

Попробуйте это:

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
            }

        });

    }
}
0 голосов
/ 28 декабря 2011

Попробуйте заменить Object test = spinner.getSelectedItem(); на String test = spinner.getSelectedItem().toString();

Также parent.getItemAtPosition(pos).toString() вернет Id вида внутри Spinner, а не текст.Чтобы получить этот текст, используйте:

TextView TV=parent.getItemAtPosition(pos);

и замените parent.getItemAtPosition(pos).toString() на TV.getText().toString();

0 голосов
/ 28 декабря 2011

В верхней части моей головы (могут быть опечатки и другие ошибки):

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 для хранения пар ключ: значение для различных уровней, которые вы предлагаете здесь, но если у вас есть только три уровня, то это должно работать нормально.

...