Получить значение в счетчике при нажатии на другой счетчик - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу создать два счетчика.

Например: (это список в Spinner1)

Category A
Category B
Category C

Когда я выбираю категорию A в spinner1, spinner2 отображает значение категорииA.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Сначала вам нужно создать 2 Spinner в вашем XML.

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

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner2"
    android:layout_margin="10dp"
    android:padding="10dp"/>

Затем вы должны объявить переменные для вашего Spinner.

final Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
final Spinner spinner2 = (Spinner)findViewById(R.id.spinner2);

Теперь вам нужноString[] для каждого Spinner, но вы хотите изменить значение одного счетчика, поэтому вам необходимо создать String[] для каждого случая.

    String[] categories = new String[] {
            "Category A", "Category B", "Category C"
    };
    String[] category_a_values = new String[] {
            "Value 1 from category a", "Value 2 from category a", "Value 3 from category a"
    };
    String[] category_b_values = new String[] {
            "Value 1 from category b", "Value 2 from category b", "Value 3 from category b"
    };
    String[] category_c_values = new String[] {
            "Value 1 from category c", "Value 2 from category c", "Value 3 from category c"
    };

String[] категории для spinner1 , а другой для spinner2 .

Теперь нам нужно ArrayAdapter для каждого String[].

    final ArrayAdapter<String> categories_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);

    final ArrayAdapter<String> category_a_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_a_values);
    final ArrayAdapter<String> category_b_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_b_values);
    final ArrayAdapter<String> category_c_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_c_values);

Здесь мы устанавливаем ArrayAdapter в spinner1 .

spinner1.setAdapter(categories_adapter);

Затем вы изменяете ArrayAdapter из spinner2 , если другое значение spinner1 было выбрано.

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0:
                    spinner2.setAdapter(category_a_adapter);
                    break;
                case 1:
                    spinner2.setAdapter(category_b_adapter);
                    break;
                case 2:
                    spinner2.setAdapter(category_c_adapter);
                    break;

                    default:


            }
        }

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

        }
    });

Весь код выглядит следующим образом

final Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
    final Spinner spinner2 = (Spinner)findViewById(R.id.spinner2);


    String[] categories = new String[] {
            "Category A", "Category B", "Category C"
    };
    String[] category_a_values = new String[] {
            "Value 1 from category a", "Value 2 from category a", "Value 3 from category a"
    };
    String[] category_b_values = new String[] {
            "Value 1 from category b", "Value 2 from category b", "Value 3 from category b"
    };
    String[] category_c_values = new String[] {
            "Value 1 from category c", "Value 2 from category c", "Value 3 from category c"
    };
    final ArrayAdapter<String> categories_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);

    final ArrayAdapter<String> category_a_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_a_values);
    final ArrayAdapter<String> category_b_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_b_values);
    final ArrayAdapter<String> category_c_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_c_values);

    spinner1.setAdapter(categories_adapter);

    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0:
                    spinner2.setAdapter(category_a_adapter);
                    break;
                case 1:
                    spinner2.setAdapter(category_b_adapter);
                    break;
                case 2:
                    spinner2.setAdapter(category_c_adapter);
                    break;

                    default:


            }
        }

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

        }
    });
0 голосов
/ 26 ноября 2018
Spinner spinner1 = findViewById(R.id.spinner_1);
Spinner spinner2 = findViewById(R.id.spinner_2);    

String[] arraySpinner = new String[] {
        "Category A", "Category B", "Category C"
};

String[] arraySpinner2 = new String[] {
        "Category A value", "Category B value", "Category C value"
};

ArrayAdapter<String> adp1 = new ArrayAdapter<String>(this,
                          android.R.layout.simple_spinner_item, arraySpinner);

adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adp1);

ArrayAdapter<String> adp2 = new ArrayAdapter<String>(this,
                          android.R.layout.simple_spinner_item, arraySpinner2);

adp2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adp2);

spinner1.setOnItemSelectedListener(new OnItemSelectedListener(){

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id){ 

        spinner2.setSelection(spinner1.getSelectedItemPosition());
    }

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


    }
});

Я еще не тестировал этот код.Я проверю позже, когда у меня будет время.

...