質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

9141閲覧

android 複数項目のspinnerからのデータ取得方法についての質問

Light_sign

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/05/09 07:28

編集2017/05/10 01:14

###前提・実現したいこと
【現状】 Macでandroidアプリを個人的に作っています。
【実現したいこと】
3項目あるspinnerから選択された値を取り出し、
その値を画面切り替え後の別のページに表示したいと考えております。

【質問】
3項目の内の一つから選択された値を取り出し、別のページに表示できたのですが、
残り2項目ができないので、どこが問題で、どのようにすれば解消できるか伺えますでしょうか?
コードに関してとんでもなく酷いとは思いますが、プログラミング1ヶ月程度ですので、ご容赦頂けますと幸いです。

画像を添付いたします。
【上記3項目として画面】
イメージ説明

【値を参照したい別ページ画面】
イメージ説明
###発生している問題・エラーメッセージ

特になし

###該当のソースコード

ここにご自身が実行したソースコードを書いてください 【MainActivity内のコード】 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.support.v7.app.AppCompatActivity; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class MainActivity extends Activity { Spinner spinner,spinner1,spinner2; private String spinnerPrice[] ={"〜5000円","5000円〜","7000円〜","10000円〜"}; private String spinnerType[] ={"iPhone3〜4S","iPhone5 or 5S","iPhone6","iPhone6S","iPhone7","その他(android,windows)"}; private String spinnerYear[] ={"1年未満","1年半以上","2年以上"}; int price = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = (Spinner)findViewById(R.id.pulldown1); spinner1 = (Spinner)findViewById(R.id.pulldown2); spinner2 = (Spinner)findViewById(R.id.pulldown3); //spinner ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerPrice); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); //spinner1 ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerType); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner1.setAdapter(adapter1); //spinner2 ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerYear); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner2.setAdapter(adapter2); spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Spinner spinner = (Spinner) parent; final String item = (String) spinner.getSelectedItem(); Spinner spinner1 = (Spinner) parent; final String item1 = (String) spinner1.getSelectedItem(); Spinner spinner2 = (Spinner) parent; final String item2 = (String) spinner2.getSelectedItem(); Button sendButton = (Button) findViewById(R.id.send_button); sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(item.equals("〜5000円")){ price = 5000; Intent intent1 = new Intent(MainActivity.this, SubActivity.class); intent1.putExtra("price",price); intent1.putExtra("type", item1); intent1.putExtra("year", item2); startActivity(intent1); }else if(item.equals("5000円〜")){ price = 6000; Intent intent1 = new Intent(MainActivity.this, SubActivity.class); intent1.putExtra("price",price); intent1.putExtra("type", item1); intent1.putExtra("year", item2); startActivity(intent1); }else if(item.equals("7000円〜")){ price = 7000; Intent intent1 = new Intent(MainActivity.this, SubActivity.class); intent1.putExtra("price",price); intent1.putExtra("type", item1); intent1.putExtra("year", item2); startActivity(intent1); }else{ price = 10000; Intent intent1 = new Intent(MainActivity.this, SubActivity.class); intent1.putExtra("price",price); intent1.putExtra("type", item1); intent1.putExtra("year", item2); startActivity(intent1); } } }); } public void onNothingSelected(AdapterView<?> parent){ } }); } }

###試したこと
課題に対してアプローチしたことを記載してください
問題がどこにあるのか全然特定はできておりませんが、「spinner.setOnItemSelectedListener」のあたりを色々変更してみましたし、
「android spinner 複数項目」等検索したのですが、お手上げです。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
言語:Java
開発環境:android studio
OS:MacOS Sierra10.12.4プログラミング

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

【元々のコード】
Spinner spinner = (Spinner) parent;
final String item = (String) spinner.getSelectedItem();
Spinner spinner1 = (Spinner) parent;
final String item1 = (String) spinner1.getSelectedItem();

【解決済みコード】
final String item = (String) spinner.getSelectedItem();

final String item1 = (String) spinner1.getSelectedItem();

【解決した流れ】
そもそもコードの意味を理解していなかったのがよろしくなかったが、
spinner.setAdapterで選ばれた配列をどのように取得しているかを考えたところ、
String item = (String) spinner.getSelectedItem();で取得したものをitemに入れているので、
上記の余計な部分を削除したところ、解決した。

投稿2017/05/10 06:14

Light_sign

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

下記のことがしたいのでしょうか。
・Spinnerを3つ表示する。
・ボタンクリック時に各Spinnerから選択中の値を取得
・取得した値を元に遷移先を決定する。

上記の仮定で回答すると
・ボタンのクリックイベント時にフィールド変数spinner,spinner1,spinner2から値を取得する。
・setOnItemSelectedListenerは不要です。
・「android spinner 複数項目」はイマイチなキーワードです。
・変数名は適切に付けましょう。

投稿2017/05/09 07:55

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Light_sign

2017/05/09 08:28

ご回答誠にありがとうございます。 ・Spinnerを3つ表示する。 ・ボタンクリック時に各Spinnerから選択中の値を取得 上記はおっしゃる通りでして、「・取得した値を元に遷移先を決定する。」に関しては、 「取得した値を遷移先に表示したい」ということです。 添付画像で申しますと、一つ目の添付画像の「スマホ機種」で「iPhone6」を選んで、「クリックしてね」で進んで行くと、二つ目の添付画像の上のほうにある「スマホ機種」というところに、選んだ「iPhone6」を表示させたいということです。 説明不足で失礼しました。 上記が実行したい内容になりますが、頂いたご回答で私の課題が解消できますでしょうか?
yona

2017/05/09 09:02

できます。 あなたのコードの問題点は、変数名さえ揃えれば同じインスタンスになると勘違いしていることです。 parentはSpinner#setOnItemSelectedListenerを使用したインスタンスになります。
Light_sign

2017/05/09 09:20

ご回答ありがとうございます。 下記承知しました。 頂いたアドバイスを元に色々試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問