Android 台灣中文網
標題:
spinner的onItemSelected 功能 [已解決]
[打印本頁]
作者:
Cake903
時間:
2018-8-2 22:12
標題:
spinner的onItemSelected 功能 [已解決]
本帖最後由 Cake903 於 2018-8-9 21:55 編輯
最後直接從頭拉view重新寫過就好了...
---------------------------------------
小弟看著書練習做了個簡易點餐系統
可以用spinner 選擇飲料後
跟著選擇的飲料不同
第二個spinner 可以調整不同的冰量
第三個spinner 可以選擇不同的糖度
按下button後 textView能跑出選擇的飲料 冰量 糖度
問題點 利用spinner.OnItemSelected
做條件
當第一個spinner 選擇第四個飲料 (檸檬汁)
第二個spinner 選項只有 冰 去冰
否則其他飲料 第二個spinner選項有 冰 去冰 溫
請問哪裡出了狀況 讓第二個spinner選項只有空白
以下是我的java檔
package
com.example.administrator.myapplication
;
import
android.support.v4.widget.TextViewCompat
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.view.View
;
import
android.widget.AdapterView
;
import
android.widget.ArrayAdapter
;
import
android.widget.Button
;
import
android.widget.EditText
;
import
android.widget.ListView
;
import
android.widget.Spinner
;
import
android.widget.TextView
;
import
java.util.ArrayList
;
public class
MainActivity
extends
AppCompatActivity
implements
View.OnClickListener
,
ListView.OnItemClickListener
,
Spinner.OnItemSelectedListener {
double
energy
[] = {
3.1
,
4.4
,
13.2
,
9.7
,
5.1
,
3.7
}
;
TextView
res
,
rel1
;
Button
btn
,
b2
;
EditText
ed1
,
ed2
;
Spinner
sp
,
sp2
,
sp3
,
sp4
;
int
p
;
String
ls
[] = {
"慢走"
,
"快走或游泳"
,
"跑步"
,
"自行車"
,
"羽毛球"
,
"高爾夫"
}
;
//運動方式spinner
ListView
lv1
;
String
st3
[] = {
"全糖"
,
"半糖"
,
"1/3糖"
,
"無糖"
}
;
String
dr
[] = {
"珍珠奶茶"
,
"波霸奶茶"
,
"仙草奶茶"
,
"檸檬汁"
}
;
String
st1
[] = {
"冰"
,
"去冰"
,
"溫"
}
;
String
st2
[] = {
"冰"
,
"去冰"
}
;
String
t1
[] = {}
;
@Override
protected void
onCreate
(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState)
;
setContentView(R.layout.
activity_main
)
;
res
= (TextView) findViewById(R.id.
res
)
;
rel1
= (TextView) findViewById(R.id.
textView3
)
;
//能量
btn
= (Button) findViewById(R.id.
button
)
;
//計算
btn
.setOnClickListener(
this
)
;
b2
= (Button) findViewById(R.id.
b2
)
;
b2
.setOnClickListener(
this
)
;
ed1
= (EditText) findViewById(R.id.
editText
)
;
// 體重 KG
ed2
= (EditText) findViewById(R.id.
editText2
)
;
// 運動時間 HR
sp
= (Spinner) findViewById(R.id.
spinner
)
;
sp
.setOnItemSelectedListener(
this
)
;
sp2
= (Spinner) findViewById(R.id.
sp2
)
;
sp2
.setOnItemSelectedListener(
this
)
;
sp3
= (Spinner) findViewById(R.id.
sp3
)
;
sp3
.setOnItemSelectedListener(
this
)
;
sp4
= (Spinner) findViewById(R.id.
sp4
)
;
sp4
.setOnItemSelectedListener(
this
)
;
lv1
= (ListView) findViewById(R.id.
LV1
)
;
lv1
.setOnItemClickListener(
this
)
;
ArrayAdapter<String> la =
new
ArrayAdapter<String>(
this,
android.R.layout.
simple_list_item_1
,
ls
)
;
lv1
.setAdapter(la)
;
ArrayAdapter<String> t2 =
new
ArrayAdapter<String>(
this,
android.R.layout.
simple_list_item_1
,
dr
)
;
ArrayAdapter<String> t3 =
new
ArrayAdapter<String>(
this,
android.R.layout.
simple_list_item_1
,
st3
)
;
sp2
.setAdapter(t2)
;
sp4
.setAdapter(t3)
;
}
@Override
public void
onClick
(View v) {
rel1
.setText(String.
valueOf
(
energy
[
p
]))
;
String ks =
ed1
.getText().toString()
;
String hs =
ed2
.getText().toString()
;
if
(v ==
btn
) {
if
(ks.length() >
0
&& hs.length() >
0
) {
double
tot =
energy
[
p
] * Double.
parseDouble
(ks) * Double.
parseDouble
(hs)
;
String spo[] = getResources().getStringArray(R.array.
sport
)
;
res
.setText(
"你運動項目為"
+ spo[
p
] +
",總消耗能量"
+ String.
format
(
"%.2f"
,
tot) +
"千卡"
)
;
}
else
res
.setText(
"體重或運動時間未輸入!!!"
)
;
}
if
(v ==
b2
) {
String ms =
"訂購飲料為:"
+
sp2
.getSelectedItem() +
"、"
+
sp3
.getSelectedItem() +
"、"
+
sp4
.getSelectedItem()
;
res
.setText(ms)
;
}
}
ArrayList<String>
sel
=
new
ArrayList<String>()
;
@Override
public void
onItemClick
(AdapterView<?> parent
,
View view
, int
position
, long
id) {
TextView tv = (TextView) view
;
String item = tv.getText().toString()
;
if
(
sel
.contains(item))
sel
.remove(item)
;
else
sel
.add(item)
;
String msg =
""
;
if
(
sel
.size() >
0
) {
msg =
"選擇運動為:"
;
int
i =
0
;
for
(String ss :
sel
) {
if
(i ==
0
) {
msg += ss
;
i =
1
;
}
else
{
msg +=
"、"
+ ss
;
}
}
}
else
msg =
"請選擇!!"
;
res
.setText(msg)
;
}
public void
onItemSelected
(AdapterView<?> adapterView
,
View view
, int
position
, long
l) {
if
(view ==
sp
) {
//運動方式的spinner
rel1
.setText(String.
valueOf
(
energy
[
p
]))
;
}
if
(view ==
sp2
) {
//飲料的spinner
if
(position ==
3
)
t1
=
st2
;
//當選擇檸檬汁時 t1[]冰度的選擇只有 st2[](冰 去冰)
else
t1
=
st1
;
//選擇其他飲料時 t1[]冰度選擇有 st1[] (冰 去冰 溫)
ArrayAdapter<String> tt =
new
ArrayAdapter<String>(
this,
android.R.layout.
simple_list_item_1
,
t1
)
;
//新增tt字串 裡面有t1[]
tt.setDropDownViewResource(android.R.layout.
simple_spinner_dropdown_item
)
;
sp3
.setAdapter(tt)
;
}
}
public void
onNothingSelected
(AdapterView<?> adapterView) { }
}
layout跟string
https://drive.google.com/open?id=1QUjWh2iS7PN9MolthdewGikUVOjufF7j
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1