Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Valerik999
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 9
#1

Обработка нескольких Spinner в Android Studio - Android

28.08.2015, 13:07. Просмотров 907. Ответов 6
Метки нет (Все метки)

Добрый день! Я только начинаю разбираться с программирование и назрел такой вопрос: в активити есть 3 Spinner. Допустим 1 - марка авто (mark), 2 - модель авто (model), 3 - модификация (mod). Смысл такой что при выборе марки авто должен заполняться данными 2 Spinner (model), и соответственно при выборе модели должен заполняться 3 Spinner модификация и уже от туда в зависимости от выбора получать данные.

В ресурсах есть массивы String array для каждого спайнера. Как мне создать такую зависимость???

Пример: выбрали Audi далее A4 далее 1.8T получили характеристики и вывели в TextView.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2015, 13:07     Обработка нескольких Spinner в Android Studio
Посмотрите здесь:

Запуск Android Studio Android
Установка Android Studio Android
Android Android Studio и AMD
Глюк Android Studio Android
Android Update Android Studio 1.0
Не запускается Android Studio Android
Android Studio Парсер Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 121
28.08.2015, 15:12     Обработка нескольких Spinner в Android Studio #2
Смотрите Страна-Город
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_not_registered_yet);
 
        tableRow0 = (TableRow) findViewById(R.id.TableRow0);
        candidatSMSInfoTV = (TextView) findViewById(R.id.candidatSMSInfoTV);
        tableRow1 = (TableRow) findViewById(R.id.tableRow1);
        countryTextView = (TextView) findViewById(R.id.countryTextView);
        tableRow2 = (TableRow) findViewById(R.id.tableRow2);
        citytextView = (TextView) findViewById(R.id.citytextView);
        tableRow3 = (TableRow) findViewById(R.id.tableRow3);
        phonetextView2 = (TextView) findViewById(R.id.phonetextView2);
        tableRow4 = (TableRow) findViewById(R.id.tableRow4);
        carModelTextView = (TextView) findViewById(R.id.carModelTextView);
        tableRow5 = (TableRow) findViewById(R.id.tableRow5);
        findViewById(R.id.sendSmsButton).setOnClickListener(this);
        findViewById(R.id.buttonNoCity).setOnClickListener(this);
        spinnerCountry = (Spinner) findViewById(R.id.spinnerCountry);
        spinnerCity = (Spinner) findViewById(R.id.spinnerCity);
        spinnerCountry.setOnItemSelectedListener(this);
 
        // smsManager = SmsManager.getDefault();
    }
 
    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int pos,
                               long arg3) {
        parent.getItemAtPosition(pos);
        if (pos == 1) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.city_ru_arrays,
                            android.R.layout.simple_spinner_item);
            spinnerCity.setAdapter(adapter);
            TetTempoDate.temp_str_5 = "xxxxxxxxx" ;
        } else if (pos == 2) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.city_ua_arrays,
                            android.R.layout.simple_spinner_item);
            spinnerCity.setAdapter(adapter);
            TetTempoDate.temp_str_5 = "+380xxxxxxxxx" ;
        } else if (pos == 3) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.city_by_arrays,
                            android.R.layout.simple_spinner_item);
            spinnerCity.setAdapter(adapter);
            TetTempoDate.temp_str_5 = "+380xxxxxxxxx" ;
        } else if (pos == 4) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.city_by_arrays,
                            android.R.layout.simple_spinner_item);
            spinnerCity.setAdapter(adapter);
            TetTempoDate.temp_str_5 = "+380xxxxxxxxx" ;
        }
        spinnerCity.setOnItemSelectedListener(
 
                new AdapterView.OnItemSelectedListener() {
                    @Override
 
                    public void onItemSelected(AdapterView<?> parent, View itemSelected,
 
                                               int selectedltemPosition, long selectedId) {
 
                        parent.getItemAtPosition(selectedltemPosition);
                        String pos = (String) parent.getItemAtPosition(selectedltemPosition);
 
                        TetTempoDate.temp_str_1 = pos;
                    }
 
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
 
                    }
 
                    //… Other required overrides
 
                });
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
   <string-array name="country_arrays">
        <item>Select Country</item>
        <item>Rusia</item>
        <item>Ukraine</item>
        <item>Belarus</item>
    </string-array>
 
    <string-array name="city_ru_arrays">
        <item>Select City</item>
        <item>Cherepovets</item>
        <item>Izhevsk</item>
        <item>Kovrov</item>
        <item>Taxovsky</item>
        <item>Votkinsk</item>
        <item>Shadki</item>
    </string-array>
 
 
    <string-array name="city_ua_arrays">
        <item>Select City</item>
        <item>Belay Cerkov</item>
        <item>Berdichev</item>
        <item>Kazatin</item>
        <item>Kelmentcy</item>
        <item>Novomoskovsk</item>
        <item>Mironovka</item>
        <item>Mucachevo</item>
        <item>Rubezhnoe</item>
        <item>Simferopol</item>
        <item>Uzhgorod</item>
        <item>Zhitomir</item>
    </string-array>
 
    <string-array name="city_by_arrays">
        <item>Select City</item>
        <item>Lepel</item>
    </string-array>
Valerik999
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 9
28.08.2015, 15:26  [ТС]     Обработка нескольких Spinner в Android Studio #3
Спасибо! Но сказать что я понял ни чего не сказать ))).
Изучив данный код понял следующее:

в методе onItemSelected через условие if () else заполняется Spinner из разных массивов. В данном условие используется номер позиции я так понимаю из основного (в моем случае 1 Spinner) списка, который определен методом spinnerCity.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {......}). Т.е. получается в первом Spinner выбрали какой то пункт, во втором Spinner идет связь позиции первого с массивом для второго. Правильно? А второй с третьи также связывать?
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 121
28.08.2015, 23:22     Обработка нескольких Spinner в Android Studio #4
ПРосто вместо страны, вбиваете марку, вместо города вбиваете модель, и по аналогии рисуйте третий уровень
Valerik999
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 9
01.09.2015, 08:29  [ТС]     Обработка нескольких Spinner в Android Studio #5
Вот таким образом я заполняю второй Spinner. Не могу понять как относительно второго заполнить Spinner который spinnerModif и получить данные относительно выбранной позиции в данном spinner. Подскажите как сделать? 4 дня просидел и не смог (((

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_not_registered_yet); 
       
        spinnerMarka = (Spinner) findViewById(R.id.spinnerMarka);
        spinnerMarka.setOnItemSelectedListener(this);
 
        spinnerModel = (Spinner) findViewById(R.id.spinnerModel);
        spinnerModif = (Spinner) findViewById(R.id.spinnerModif);
        
 
        // smsManager = SmsManager.getDefault();
    }
 
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
                               long id) {
        parent.getItemAtPosition(position);
        if (position == 1) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.ModelA,
                            android.R.layout.simple_spinner_item);
            spinnerModel.setAdapter(adapter);
            
        } else if (position == 2) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.ModelB,
                            android.R.layout.simple_spinner_item);
            spinnerModel.setAdapter(adapter);
           
        } else if (position == 3) {
            ArrayAdapter<CharSequence> adapter = ArrayAdapter
                    .createFromResource(this, R.array.ModelC,
                            android.R.layout.simple_spinner_item);
            spinnerModel.setAdapter(adapter);
            
        } 
        spinnerModel.setOnItemSelectedListener(
 
                new AdapterView.OnItemSelectedListener() {
                    @Override
 
                    public void onItemSelected(AdapterView<?> parent, View view,
 
                                               int Pos, long Id) {
 
                        parent.getItemAtPosition(Pos);
                        // Тут я так понимаю надо относительно выбранного пункта заполнить 3 Spinner. Но как?
                        
                    }
 
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
 
                    }
 
                    //… Other required overrides
 
                });
    }
Valerik999
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 9
02.09.2015, 08:58  [ТС]     Обработка нескольких Spinner в Android Studio #6
Все! Разобрался! Спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2015, 15:38     Обработка нескольких Spinner в Android Studio
Еще ссылки по теме:

Android Сохранение. Android Studio
Android Ресурсы android studio
Android Studio запарка Android
Android Git в Android Studio
Ошибка R в Android Studio Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
29.09.2015, 15:38     Обработка нескольких Spinner в Android Studio #7
К примеру у меня есть 17 областей, свыше 150 регионов и около 1000 нас. пунктов.
Я пока сделал тестовый вариант для 2 областей, 4 регионов, и 8 населенных пунктов. Использовал switch вместо if. Но чувствую что код получится слишком громоздким.

Не подскажите как тут можно поступить?
Yandex
Объявления
29.09.2015, 15:38     Обработка нескольких Spinner в Android Studio
Ответ Создать тему
Опции темы

Текущее время: 19:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru