馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
本帖最後由 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
|
|