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

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

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

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

26.02.2015, 08:30. Просмотров 967. Ответов 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) {
 
 
    }    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2015, 08:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение связанных Spinner массивами из строк (Программирование Android):

Заполнение spinner из массива - Программирование Android
Добрый день! Впервые на этом форуме, да и вообще новичок в разработке, поэтому не ругайте сильно, если уже были ответы, просто посоветуйте...

поделитесь знаниями в Basic, связанных с массивами - Basic
Доброго времени суток. Помогите решить контрольную на языке Бейсик. В качестве компенсации за труд, могу закинуть деньги в электронный...

Формы. Заполнение связанных таблиц - MS Access
Здравствуйте. В БД есть 2 таблицы: Организации и Слушатели. Связь между ними - один ко многим Поля в таблице &quot;Организации&quot;: -...

Заполнение данными на SQL двух связанных таблиц - Web
Есть 2 таблицы: Объявление и Автор поля: Объявление.id, Объявление.Текст, Автор.Фамилия, Автор.Id_автора, Автор.Адрес ,где...

Заполнение связанных полей подчиненных, но не смежных форм - MS Access
Прошу рассмотреть во вложении пример структуры БД и соответствующую ей форму frmОбъект1 с подчиненной ей frmОбъект2 с подчиненной ей, в...

Заполнение связанных таблиц через одну форму - MS Access
Здравствуйте , у меня вот такой вопрос : во время написания дипломного проекта мне сказали что для добавления сведений в базу можно...

10
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
26.02.2015, 09:55 #2
Цитата Сообщение от салта Посмотреть сообщение
Кооод
Всем кодам код!
0
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
26.02.2015, 12:04  [ТС] #3
что???? это сто раз измененный, и все равно нерабочий
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
26.02.2015, 12:48 #4
Может так?
switch (pos)
0
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
26.02.2015, 13:21  [ТС] #5
так тоже было, второй спиннер не меняется(
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
26.02.2015, 14:12 #6
Debug надо проходить, визуально не понять.
0
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
04.03.2015, 19:25  [ТС] #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. В самих экранах ничего же прописывать не нужно?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
04.03.2015, 20:21 #8
А как это из одной активити другой управлять? Так нельзя. И где код второй активити? Передавайте значение через интент.
0
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
04.03.2015, 20:26  [ТС] #9
Значение выбранного элемента списка передать в другую активити? и там принять значение и с ним работать?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
04.03.2015, 21:23 #10
Совершенно верно.
0
салта
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 8
07.03.2015, 23:30  [ТС] #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);
не выходит? хотя скорее всего эт у меня-рукожопа не выходит( Буду рада если кто-нибудь ткнет носом в ошибку
0
07.03.2015, 23:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2015, 23:30
Привет! Вот еще темы с ответами:

Заполнение Hashtable массивами - Visual Basic .NET
Привет всем! Начал работать с таким полезным классом как Hashtable. Пока что разбираю что к чему и как его можно использовать. Составил...

Удаление связанных строк - MS Access
есть таблица1 : Поле1 - ключевое есть таблица2: Поле1 - внешний ключ на таблица1.Поле1 в какой-то момент удаляется строка из...

Работа с массивами(заполнение по образцу) - Pascal
Ребята помогите с кодом нада заполнить матрицу по примеру 25 24 23 22 21 16 17 18 19 20 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1 ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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