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

spinner - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
30.04.2013, 15:53     spinner #1
как реализовать spinner чтобы к выбранной строке соответствовала число. например есть формула A+B+C=Z.
A,B - это EditText (с этим все понятно),а вот Z = это spinner. в spinner`е есть слова "число1"- это 0.1; "число2"-это; 0.2 "число3" это - 0.5;
при эмуляции приложения ввожу в EditText`ы числа 1 и 2 в Spinner`e выбираю строку "число2" оно соответствует значению 0.5. значит будет так 1+2+0.5=3.5 вот как все это реализовать в приложении?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 15:53     spinner
Посмотрите здесь:

Spinner Android
Android Кастомизация Spinner
Android проблема со Spinner'ом
Android spinner в ListView
Android быстрый Spinner
Наполнение Spinner из БД Android
Android Java spinner
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.04.2013, 16:31     spinner #2
Java
1
2
3
4
5
6
            List<Float> list = new ArrayList<Float>();
            list.add(0.1f);
            list.add(0.2f);
            list.add(0.5f);
            
            float c = list.get(spinner.getSelectedItemPosition());
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
30.04.2013, 16:58  [ТС]     spinner #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.example;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}
и куда его вставлять этот код?
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.04.2013, 18:37     spinner #4
http://developer.android.com/guide/t...s/spinner.html
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
30.04.2013, 19:12  [ТС]     spinner #5
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import java.util.ArrayList;
 
import android.os.Bundle;
import android.app.Activity;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    int a,b; //для едиттекст
    double ss,d;//
    EditText text1,text2;
    TextView textOtv;
    Spinner spin; 
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         this.setContentView(R.layout.main);
         
         textOtv = (TextView) findViewById(R.id.textView2);//ответ
            text1 = (EditText) findViewById(R.id.editText1);
            text2 = (EditText) findViewById(R.id.editText2);
            spin = (Spinner) findViewById(R.id.spinner1);//спиннер
            
            final Button button1 = (Button) findViewById(R.id.button1);
            button1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                     try {
                         a = Integer.parseInt(text1.getText().toString());//едиттекст1
                         b = Integer.parseInt(text2.getText().toString());//едиттекст2
                         ss = Double.parseDouble(spin.getContext().toString());//спиннер здесь выбрал на угат
                     }catch (NumberFormatException e) {
                         a = 0;
                         b = 0;
                        //ss=0; если разкоментировать то будет ошибка
                     }
                    d = a+b+ss;//решения а=EditText1 b=EditText2 ss=Spinner т.е.не слова и соответствующая к слове цифра
                    textOtv.setText(" "+d); //выводит ответ
                }
                
            });
    
         
        Spinner spn = (Spinner) this.findViewById(R.id.spinner1);
        ArrayList<Mat> mat = new ArrayList<Mat>();
        mat.add(new Mat("Число1", 0.12));//к слове Число1 соответствует цифра 0.12
        mat.add(new Mat("Число2", 0.11));//так же 
        mat.add(new Mat("Число3", 0.5));//так же
        MyAdapter adapter = new MyAdapter(mat);
        spn.setAdapter(adapter);
        spn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                Mat m = (Mat) parent.getItemAtPosition(pos);
                Toast.makeText(getApplicationContext(),
                        m.name+"  "+m.age+"",
                        Toast.LENGTH_LONG).show();
                
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
                
            }
        });
    }
    private class MyAdapter implements SpinnerAdapter{
         ArrayList<Mat> data;
         
         public MyAdapter(ArrayList<Mat> data){
                this.data = data;
            }
         @Override
            public int getCount() {
                return data.size();
            }
         @Override
            public Object getItem(int position) {
                return data.get(position);
            }
         @Override
            public long getItemId(int position) {
                return position;
            }
 
            @Override
            public int getItemViewType(int position) {
                return android.R.layout.simple_spinner_dropdown_item;
            }
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView v = new TextView(getApplicationContext());
                v.setTextColor(Color.BLACK);
                v.setText(data.get(position).name);
                return v;
            }
 
            @Override
            public int getViewTypeCount() {
                return 1;
            }
 
            @Override
            public boolean hasStableIds() {
                return false;
            }
 
            @Override
            public boolean isEmpty() {
                return false;
            }
 
            @Override
            public void registerDataSetObserver(DataSetObserver observer) {
                
 
            }
 
            @Override
            public void unregisterDataSetObserver(DataSetObserver observer) {
              
 
            }
            
            @Override
            public View getDropDownView(int position, View convertView,
                    ViewGroup parent) {
                return this.getView(position, convertView, parent);
            }
    }
    private class Mat{
        
        public String name;
        public double age;
        
        public Mat(String name, double age){
            this.name = name;//стринги
            this.age = age;//double значения
        }
    }
    
 
}
этот пример должен вот так работать допустим выбираю строку "число3" оно соответствует числу 0.5 и если нажать на кнопку решить то появиться ответ
Почему то ошибка появляется может в ss = Double.parseDouble(spin.getContext().toString()); надо что то менять?

Добавлено через 1 минуту
у меня уже голова пухнет
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 526
30.04.2013, 20:26     spinner #6
Цитата Сообщение от Zapp Посмотреть сообщение
как реализовать spinner чтобы к выбранной строке соответствовала число.
Примерно так. Как создать "список спинера" вы знаете? Этот момент пока не буду описывать.

Создаем переменную, в которую, будем помещать id (номер) выбранной позиции.

Java
1
double pos;
Так же, создаем переменную, которая будет содержать значения, для каждой позиции. Назовем её просто - A
Java
1
double A;
Создаем спинер

Java
1
2
3
4
5
 final Spinner spin = (Spinner) findViewById(R.id.spinner);
  ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.(ваш список элементов массива), android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(adapter);
Потом

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pos = spin.getSelectedItemPosition();
 
                if (pos == 0) {
 
                    A = 1;
 
                }
                if (pos == 1) {
                    A = 1.434;
 
                }
                if (pos == 2) {
 
                    A = 2.5;
                }
Все.

А если честно, я вообще не понял, к чему вы нагородили весь этот огород который выше?
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
01.05.2013, 03:57  [ТС]     spinner #7
вот пытаюсь реализовать spinner с edittext`ом в edittext понятно там просто вводишь число. вот со спинером что то трудно надо выбрать слова а за этим словом закреплена число и когда пропускаем через формулу решения то оно должно все посчитать и вывести ответ

Добавлено через 6 часов 52 минуты
http://stackoverflow.com/questions/6...ing-array-list за основу взято эта
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
01.05.2013, 09:57  [ТС]     spinner #8
нажимаю на кнопку ответ 0.0
Миниатюры
spinner  
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
01.05.2013, 09:58  [ТС]     spinner #9
в числе3 такое значения
Миниатюры
spinner  
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 526
01.05.2013, 15:58     spinner #10
Для начала, не плохо бы изменить конструкцию.

С такой:

Java
1
2
3
4
5
6
try {
                       a = Integer.parseInt(text1.getText().toString());//едиттекст1
                         b = Integer.parseInt(text2.getText().toString());//едиттекст2
                         ss = Double.parseDouble(spin.getContext().toString());//спиннер здесь выбрал на угат
                     }catch (NumberFormatException e) {
                         a = 0;
На такую:

Java
1
2
3
4
5
6
7
8
9
10
11
12
try {
     a = Integer.parseInt(text1.getText().toString());//едиттекст1
    }catch (NumberFormatException e) {
                         a = 0;}
try {
     b = Integer.parseInt(text2.getText().toString());//едиттекст2
    }catch (NumberFormatException e) {
                         b = 0;}
try {
       ss = Double.parseDouble(spin.getContext().toString());//спиннер здесь выбрал на угат
      }catch (NumberFormatException e) {
                         ss = 0;}
Тогда будет яснее где ошибка.
Ошибка видимо в том, что вы пытаетесь получить значение от спинера, до того как оно там появляется.
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
01.05.2013, 16:25  [ТС]     spinner #11
уже что то есть за это большое спасибо
прибавляет только edittext`ы а вот spinner что то не видит
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 526
01.05.2013, 17:06     spinner #12
Попробуйте передвинуть ваш
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
final Button button1 = (Button) findViewById(R.id.button1);
            button1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                     try {
                         a = Integer.parseInt(text1.getText().toString());//едиттекст1
                         b = Integer.parseInt(text2.getText().toString());//едиттекст2
                         ss = Double.parseDouble(spin.getContext().toString());//спиннер здесь выбрал на угат
                     }catch (NumberFormatException e) {
                         a = 0;
                         b = 0;
                        //ss=0; если разкоментировать то будет ошибка
                     }
                    d = a+b+ss;//решения а=EditText1 b=EditText2 ss=Spinner т.е.не слова и соответствующая к слове цифра
                    textOtv.setText(" "+d); //выводит ответ
                }
                
            });
, вниз, куда нибудь после спинера. Как вариант.
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
01.05.2013, 17:36  [ТС]     spinner #13
нажал на кнопку, 0 получилось
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2015, 14:34     spinner
Еще ссылки по теме:

Android Список из Spinner
Spinner Android
Android Spinner
Spinner Android
Android Spinner в AlertDialog

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

Или воспользуйтесь поиском по форуму:
Mrsuper
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 21
06.09.2015, 14:34     spinner #14
везде парси double и editText тоже(мне помогло)
Yandex
Объявления
06.09.2015, 14:34     spinner
Ответ Создать тему
Опции темы

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