綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] spinner的onItemSelected 功能 [已解決]

[複製連結] 查看: 2381|回覆: 0|好評: 0
跳轉到指定樓層
樓主
Cake903 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2018-8-2 22:12

馬上加入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

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則