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

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

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

Заполнение связанных Spinner массивами из строк - Android

26.02.2015, 08:30. Просмотров 851. Ответов 10
Метки нет (Все метки)

Всем привет.
Первый спиннер заполняется элементами массива строк (массив прописан в ресурсах), по позиции элемента через switch case of заполняется второй спиннер( тут тоже массивы строк и тоже прописаны в ресурсах). Проблема в том, что при выборе любого элемента из первого спиннера, второй заполняется элементами массива последней прописанной позиции. То есть не выбранной мною, а прописанной последней в блоке Свич.
Кооод
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package com.example.movie4you;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
 
import android.widget.ArrayAdapter;
import android.widget.Spinner;
 
public class MainActivity extends Activity {
 
public Spinner mood_spinner,spinner2;
 
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        chooseMood();
        chooseLegkoe();
        chooseTyazheloe();
        chooseVeseloe();}
 
        //Установка слушателя для выпадающего списка
 
        // spinner.getItemIdAtPosition(position.Id);
public void chooseMood() {
    mood_spinner= (Spinner) findViewById(R.id.mood_spinner);
    // Создаем адаптер ArrayAdapter с помощью массива строк и  стандартной разметки элемета spinner
    ArrayAdapter<CharSequence> MoodAdapter =
            ArrayAdapter.createFromResource(this,
                    R.array.mood, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
    MoodAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Применяем адаптер к элементу spinner
 
 
    mood_spinner.setAdapter(MoodAdapter);
}
 
 
       private void chooseLegkoe(){
           spinner2=(Spinner) findViewById(R.id.spinner2);
           ArrayAdapter<CharSequence> LAdapter =
                   ArrayAdapter.createFromResource(this,
                           R.array.legkoe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
           LAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           spinner2.setAdapter(LAdapter);
       }
        private void chooseTyazheloe(){
    spinner2=(Spinner) findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> TAdapter =
            ArrayAdapter.createFromResource(this,
                    R.array.tyazheloe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
    TAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(TAdapter);
}
        private void chooseVeseloe(){
            spinner2=(Spinner) findViewById(R.id.spinner2);
            ArrayAdapter<CharSequence> VAdapter =
                    ArrayAdapter.createFromResource(this,
                            R.array.Veseloe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
            VAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner2.setAdapter(VAdapter);
        }
    private void chooseGrustnoe(){
        spinner2=(Spinner) findViewById(R.id.spinner2);
        ArrayAdapter<CharSequence> GAdapter =
                ArrayAdapter.createFromResource(this,
                        R.array.Grustnoe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
        GAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(GAdapter);
    }
    private void chooseStrashnoe(){
        spinner2=(Spinner) findViewById(R.id.spinner2);
        ArrayAdapter<CharSequence> StAdapter=
                ArrayAdapter.createFromResource(this,
                        R.array.Strashnoe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
       StAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(StAdapter);
    }
 
 
  public void onItemSelected(AdapterView<?> parent, View v, int pos,
                           long id) {
 
        parent.getItemAtPosition(pos);
        switch (mood_spinner.getSelectedItemPosition()){
            case 0:{
                spinner2=(Spinner) findViewById(R.id.spinner2);
                ArrayAdapter<CharSequence> LAdapter =
                        ArrayAdapter.createFromResource(this,
                                R.array.legkoe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
                LAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner2.setAdapter(LAdapter);
                break;}
           case 1:{
                chooseTyazheloe();
                break;}
          case 2:{
               chooseVeseloe();
              break;}
            case 3:{
                chooseGrustnoe();
                break;}
              case 4:{
                  spinner2=(Spinner) findViewById(R.id.spinner2);
                  ArrayAdapter<CharSequence> StAdapter=
                          ArrayAdapter.createFromResource(this,
                                  R.array.Strashnoe, android.R.layout.simple_spinner_item);
// Определяем разметку для использования при выборе элемента
                  StAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                  spinner2.setAdapter(StAdapter);
            break;}    }
        // if (pos==0){
 
        //}else if (pos==1){
          //chooseTyazheloe();
 
        //} else if (pos==2){
         //chooseVeseloe();
          }
 
 
 
    public void onNothingSelected(AdapterView<?> arg0) {
 
 
    }    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2015, 08:30     Заполнение связанных Spinner массивами из строк
Посмотрите здесь:

spinner Android
Spinner Android
элемент spinner Android
Android проблема со Spinner'ом
Android быстрый Spinner
Android Список из Spinner
Spinner Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
26.02.2015, 09:55     Заполнение связанных Spinner массивами из строк #2
Цитата Сообщение от салта Посмотреть сообщение
Кооод
Всем кодам код!
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
26.02.2015, 12:04  [ТС]     Заполнение связанных Spinner массивами из строк #3
что???? это сто раз измененный, и все равно нерабочий
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
26.02.2015, 12:48     Заполнение связанных Spinner массивами из строк #4
Может так?
switch (pos)
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
26.02.2015, 13:21  [ТС]     Заполнение связанных Spinner массивами из строк #5
так тоже было, второй спиннер не меняется(
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
26.02.2015, 14:12     Заполнение связанных Spinner массивами из строк #6
Debug надо проходить, визуально не понять.
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
04.03.2015, 19:25  [ТС]     Заполнение связанных Spinner массивами из строк #7
Ок, ок, спасибо за посильную помощь.
Другой вопрос: решила эти два спиннера на два разных экрана посадить(так как спиннер при запуске уже какой-нибудь элемент показывает выбранным, даже если promp и пустую первую строку делаешь). Пытаюсь сделать так, чтобы по выбранной строке из спиннера, заполненного элементами массива в следующем экране-активности заполнился второй спиннер. ИИИ не получается.. Буду благодарна за любые идеи
Код в MainActivity
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.example.primer;
 
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
import com.example.primer.R;
import com.example.primer.SelectingItem;
 
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends Activity {
 
 
    private Spinner choco,har;
    private Button done;
    TextView choco_display;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        choco = (Spinner) findViewById(R.id.chocolate_spinner);
        choco.setOnItemSelectedListener(new SelectingItem());
        done=(Button)findViewById(R.id.done);
 
 
        done.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setContentView(R.layout.selected_layout);
                choco_display=(TextView)findViewById(R.id.display_choco);
 
                choco_display.setText("Chocolate: "+String.valueOf(choco.getSelectedItem()));
 
            }
        });
        ArrayAdapter<CharSequence> MAdapter =
                ArrayAdapter.createFromResource(this,
                        R.array.chocolate, android.R.layout.simple_spinner_item);
        MAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        choco.setAdapter(MAdapter);
    }
 
 
 
 
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    protected void onCreate1(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.selected_layout);
 
        har= (Spinner) findViewById(R.id.har);
        choco.setOnItemSelectedListener(new SelectingItem());
        done=(Button)findViewById(R.id.done);
 
 
 
        };
    public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
       if (choco.getSelectedItem().equals("Crackles")) {
 
            ArrayAdapter<CharSequence> Adapter1 =
                    ArrayAdapter.createFromResource(this,
                            R.array.crackles, android.R.layout.simple_spinner_item);
            Adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            har.setAdapter(Adapter1);
        }
            else if (choco.getSelectedItem().equals("Fruit and Nut")) {
                ArrayAdapter<CharSequence> Adapter2 =
                        ArrayAdapter.createFromResource(this,
                                R.array.Fruit, android.R.layout.simple_spinner_item);
                Adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                har.setAdapter(Adapter2);
 
        }
 
    }
 
 
}
P.S. В самих экранах ничего же прописывать не нужно?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
04.03.2015, 20:21     Заполнение связанных Spinner массивами из строк #8
А как это из одной активити другой управлять? Так нельзя. И где код второй активити? Передавайте значение через интент.
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
04.03.2015, 20:26  [ТС]     Заполнение связанных Spinner массивами из строк #9
Значение выбранного элемента списка передать в другую активити? и там принять значение и с ним работать?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
04.03.2015, 21:23     Заполнение связанных Spinner массивами из строк #10
Совершенно верно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2015, 23:30     Заполнение связанных Spinner массивами из строк
Еще ссылки по теме:

Spinner элементы Android
Android Spinner и NavigationDrawer
Android Spinner
Android Заполнение spinner из массива
Spinner Android

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

Или воспользуйтесь поиском по форуму:
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
07.03.2015, 23:30  [ТС]     Заполнение связанных Spinner массивами из строк #11
Доброе время суток) В главной активити прописала
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 done.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setContentView(R.layout.selected_layout);
                choco_display=(TextView)findViewById(R.id.textViewInfo);
 
                choco_display.setText("Chocolate: "+String.valueOf(choco.getSelectedItem()));
               //ntent intent = new Intent(MainActivity.this, activity2.class);
 
                // в ключ username пихаем текст из первого текстового поля
               //ntent.putExtra("item", String.valueOf(choco.getSelectedItem()));
               //tartActivity(intent);
            }
и в след экране надпись с выбранным элементом уже есть. Подскажите пожалуйста, как эту строку-значение дальше использовать уже в экране activity2?
Ведь в коде второй активити я не писала эту строку, как туда можно передать?
Через
Java
1
2
3
 Intent intent = new Intent(MainActivity.this, activity2.class);
        intent.putExtra("item", String.valueOf(Item));
        startActivity(intent);
не выходит? хотя скорее всего эт у меня-рукожопа не выходит( Буду рада если кто-нибудь ткнет носом в ошибку
Yandex
Объявления
07.03.2015, 23:30     Заполнение связанных Spinner массивами из строк
Ответ Создать тему
Опции темы

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