Подтвердить что ты не робот

Android создает прядильщик с элементами, которые имеют скрытое значение и отображают некоторый текст?

Я уверен, что этого много, и я нашел некоторые вопросы, похожие на них, но никто не получил монету для меня. Я надеюсь, что кто-то сможет мне помочь.

Что я хочу сделать, это предоставить пользователю выпадающий список (список) вкусов Vanilla, Chocolate, Strawberry.

Когда пользователь выбрал аромат по своему выбору, я хочу, чтобы значение Strawberry было возвращено 10.

Strawberry = 10
Chocolate = 20
Vanilla = 30

Я родом из фона vb.net, поэтому считаю, что это невероятно сложно работать с тем, что мне нужны массивы и прочее для этого?

Может ли кто-нибудь упростить вещи для меня и, возможно, поделиться каким-то кодом?

4b9b3361

Ответ 2

вы можете попробовать это

ArrayAdapter<String> SpinerAdapter;
         String[] arrayItems = {"Strawberry","Chocolate","Vanilla"};
         final int[] actualValues={10,20,30}; 

        SpinerAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_dropdown_item, arrayItems);
        spinner.setAdapter(SpinerAdapter);

        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                int thePrice=actualValues[ arg2];

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

Ответ 3

вот код:

        TextView textView=(TextView) findViewById(R.id.textView1);
        Spinner spinner=(Spinner) findViewById(R.id.spinner1);
        spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,quantity));
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                if(arg2==0){
                textView.setText("Strawberry = 10");
            }else if(arg2==1){
                textView.setText("Chocolate = 20");
            }else if(arg2==2){
                textView.setText("Vanilla = 30");
            }

            }

            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });

String[] quantity={"Strawberry","Chocolate","Vanilla"};

и файл xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />

</LinearLayout>

Ответ 4

Используйте Enums, чтобы аккуратно завернуть все.

Использование Enums сохраняет чистоту и предоставляет объектно-ориентированный интерфейс, не сохраняя данные. И по внешнему виду вы используете постоянные значения для каждого из ваших "ароматов" (например, Strawberry = 10).

Итак, начните с создания "Пакета" или каталога с именем enums. Мы сохраним все ваши enums там.

Затем создайте новый файл, который называется Flavour:

<сильные > перечислений /Flavour.java

public enum Flavour {

    STRAWBERRY("Strawberry", 10),
    CHOCOLATE("Chocolate", 20),
    VANILLA("Vanilla", 30);

    private String displayString;
    private int value;

    private Flavour ( String displayString, int value) {
        this.displayString = displayString;
        this.value   = value;
    }

    @Override
    public String toString() {
        return displayString;
    }

    public String displayString() { return displayString; }

    public String value() { return value; }

    public static Flavour fromDisplayString( String displayString) {

        if ( displayString != null ) {
            for ( Flavour flavour : Flavour.values() ) {
                if ( displayString.equalsIgnoreCase( flavour.displayString ) ) {
                    return flavour;
                }
            }
        }

        throw new IllegalArgumentException("No Flavour with display string " + displayString + " found");

    }

    public static Flavour fromValue( int value) {
        if (value != null) {
            for (Flavour flavour : Flavour.values()) {
                if (value.equals(flavour.value)) {
                    return flavour;
                }
            }
        }

        throw new IllegalArgumentException("No Flavour with value " + value + " found");
    }

}

Я оставлю остальную часть материала адаптера, чтобы сделать это, но ключевые части:

  • Используйте Flavour.values(), чтобы получить массив Flavors для вашего адаптера Spinner.

  • toString() будет автоматически вызываться, когда Spinner будет заполняться, так что ваша отображаемая строка (или то, что вы вернете в этом методе) будет отображаться.

  • При сохранении значения вы можете использовать это:

    ( (Flavour) spinner.getSelectedItem() ).value();
    

Ответ 5

Вы можете создать экземпляр массива ArrayAdapter с типом объекта данных. Затем Spinner будет удерживать ваш полный объект данных вместо String. Отображаемые значения будут определяться методом toString() ваших объектов данных.

Пример:

List<Project> allProjects = ...;

    ArrayAdapter<Project> spinnerAdapter = new ArrayAdapter<Project>(this, android.R.layout.simple_spinner_item,allProjects.toArray(new Project[allProjects.size()]));
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerAdapter);
    spinner.setOnItemSelectedListener(this);

...

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Log.i(AppConst.TAG, "ItemSelected:" + position + " id: " + id);
    Project selectedProject = (Project)getSpinner().getSelectedItem();
    currentTask = selectedProject.toString();
    Log.i(AppConst.TAG, "Selected Project:" + selectedProject.getId());
    ...
}