Spinnerの使い方について

720 views
Skip to first unread message

Supica

unread,
Aug 4, 2010, 12:34:15 AM8/4/10
to 日本Androidの会
Supicaと申します
スピナーを使ったアンケート形式のアプリを作っていて
スピナーにアイテムを加えるまでは出来たんですが
スピナーで選択した項目を別ページにテキストで表示させたいのですが方法が分かりません
初歩的な質問で申し訳ありませんがよろしくお願いします

Spinner spinner1=(Spinner)findViewById(R.id.Spinner01);
spinner1.setAdapter(new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item));

//押されたときの処理
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
//選択されたときの処理
//@Override
public void onItemSelected(AdapterView<?> parent,View view,int
position,long id){
Spinner spinner1 = (Spinner) parent;
Log.d("Spinner01", "onItemSelected id = " + sp1 + "("+
spinner1.getSelectedItem().toString() + ")");
}
//選択されなくなったときの処理
//@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d("Spinner01", "onNothingSelected");
}
});



もちこ。

unread,
Aug 4, 2010, 5:15:15 AM8/4/10
to 日本Androidの会
はじめまして、もちこ。と申します。

選択値が取得できているのはLogCatで確認できましたので、
選択値の取得はできたけれど別ページ(=別Activity?)
に値を渡すことができない、ということでよろしいでしょうか?

Supica

unread,
Aug 4, 2010, 11:37:30 PM8/4/10
to 日本Androidの会
もちこさん、返信ありがとうございます

>選択値の取得はできたけれど別ページ(=別Activity?)に値を渡すことができない、ということでよろしいでしょうか?

目的としては、    あなたが選択した回答は ”取得した値”  です
のような表示を別ページで行いたいのですが
取得した値をテキストなどに表示する方法から分からないので
お手数ですがそこからおしえて頂けないでしょうか
よろしくお願いします

micco

unread,
Aug 5, 2010, 12:00:00 AM8/5/10
to 日本Androidの会
こんにちは。
miccoです。

スピナーで取得した値をSharedPreferenceで一旦保存して表示用Activity内
で読み出すか、取得値をインテントに付加して表示用Activityを呼び出すかし、
その渡された情報をTextView.setText()で表示すれば良さそうですが。。。
質問の主旨が違いますか?
> > });- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Supica

unread,
Aug 5, 2010, 11:23:12 PM8/5/10
to 日本Androidの会
もちこさん、返信ありがとうございます

処理の流れのようなものはは分かるのですが処理の使い方が分かりません

ソースで表すとどのようになるのでしょうか?
> > > Spinnerspinner1 = (Spinner) parent;

夜子まま

unread,
Aug 6, 2010, 12:18:10 AM8/6/10
to android-g...@googlegroups.com
夜子ままです

スピナーで取得した値を別のページといってるけど、別のページって何でしょう?

Activityなのか、Dialogなのか、同じ画面内のなにかなのか、そこがはっきりしないとよくわからないです。

例えばだけど、同じ画面内のTextViewにSpinnerで選択した値を表示する場合は以下のような感じ


TextView kotae; <- メンバ変数にしておく
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//省略
kotae= (TextView) findViewById(R.id.kotae); <- メンバ変数にkotae(TextView)のインスタンスを設定
Spinner spinner1 = (Spinner) findViewById(R.id.Spinner01);
spinner1.setAdapter(new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item));

// 押されたときの処理
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
// 選択されたときの処理
// @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Spinner spinner1 = (Spinner) parent;
Log.d("Spinner01", "onItemSelected id = " + sp1 + "("
+ spinner1.getSelectedItem().toString() + ")");
kotae.setText(spinner1.getSelectedItem().toString()); <- 答えを(kotae)TextViewに設定する
}

// 選択されなくなったときの処理
// @Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d("Spinner01", "onNothingSelected");
}
});

}


別ページが、別のActivityの場合、その画面から kotae にアクセスできないので別の方法でその画面にデータを渡す必要があります。

方法として、micco さんのいうように一旦、SharedPreferenceに保存してとりだすか、
呼び出すときにIntentにセットするかになります。

セットした場合はどちらもonCreateで取得する処理が必要になります。


そうじゃなくて、そもそもこのスピナーの画面自体が呼び出された画面で、呼び出された元の画面に値をわたしたいんだっていうなら
onActivityResultで値を取得する処理が必要なります。

というわけなので、もうすこし具体的にやりたいことを説明してくれればもっと適切な返事ができますよ。


2010年8月6日12:23 Supica <supi...@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


Supica

unread,
Aug 9, 2010, 1:46:47 AM8/9/10
to 日本Androidの会



夜子ままさん、返信ありがとうございます
やりたい事としては、スピナーが複数ありアンケート形式で回答して
各スピナーで選択した項目を別Activityにテキストで表示させる処理を行いたいんです

教えて頂いたソースで実行してみたんですが、正しく表示されませんでした
そこで改めて調べて下記のようなソースを組んだのですが実行してもスピナーの値が表示されません

お手数ですが教えて頂けますでしょうか
よろしくお願いします


Spinner spinner01=(Spinner)findViewById(R.id.Spinner01);
 spinner01.setAdapter(new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item));

spinner01.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
String string1 = ((Spinner)parent).getSelectedItem().toString();

TextView textView1 = (TextView)findViewById(R.id.TextView01);
textView1.setText(string1);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
> 2010年8月6日12:23 Supica <supic...@gmail.com>:
> > このグループから退会するには、android-group-j...@googlegroups.com<android-group-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。

夜子まま

unread,
Aug 9, 2010, 2:36:10 AM8/9/10
to android-g...@googlegroups.com
夜子ままです

メールで説明をするのはむずかしいようので簡単なサンプルを作ってみました。
参考にしてみてください。

管理人さん、もしよければこのサンプルをMLのファイルスペースにアップしておいていただけないでしょうか。

初歩的なサンプルですが、
Intentによる画面間のデータのやりとりのサンプルです。



2010年8月9日14:46 Supica <supi...@gmail.com>:
ML5830-lessen1.zip

Supica

unread,
Aug 10, 2010, 4:16:20 AM8/10/10
to 日本Androidの会
夜子ままさん、返信ありがとうございます
サンプルまで作って頂きありがとうございました
おかげでSpinnerの使い方と画面遷移時のデータのやりとりの方法が分かり
解決しました

いろいろありがとうございました


On 8月9日, 午後3:36, 夜子まま <hijirinhiji...@gmail.com> wrote:
> 夜子ままです
>
> メールで説明をするのはむずかしいようので簡単なサンプルを作ってみました。
> 参考にしてみてください。
>
> 管理人さん、もしよければこのサンプルをMLのファイルスペースにアップしておいていただけないでしょうか。
>
> 初歩的なサンプルですが、
> Intentによる画面間のデータのやりとりのサンプルです。
>
> 2010年8月9日14:46 Supica <supic...@gmail.com>:
> > <android-group-japan%2Bunsu...@googlegroups.com<android-group-japan%252Buns...@googlegroups.com>
> > >にメールを送信してください。
> > > > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > からこのグループにアクセスしてください。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com<android-group-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
>
>
>
> ML5830-lessen1.zip
> 21K表示ダウンロード

Supica

unread,
Aug 13, 2010, 5:57:53 AM8/13/10
to 日本Androidの会
またお世話になります、Supicaです

Spinnerを使って検索アプリの様な物を作ってみたいのですが
Spinnerで選択した項目に応じて別クラスからデータを取得して表示させるにはどうしたらいいでしょうか
データベースが分からなかったのでが分からなかったのでデータは配列で作成してあります

よろしくお願いします



Spinnerの選択した項目別に処理を変える方法を教えていただけないでしょうか
> > > >Spinnerspinner1 = (Spinner) findViewById(R.id.Spinner01);
> > > > spinner1.setAdapter(new ArrayAdapter<CharSequence>(this,
> > > > android.R.layout.simple_spinner_item));
>
> > > > // 押されたときの処理
> > > > spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
> > > > // 選択されたときの処理
> > > > // @Override
> > > > public void onItemSelected(AdapterView<?> parent, View view,
> > > > int position, long id) {
Reply all
Reply to author
Forward
0 new messages