UI基础入门-综合案例-01

package com.example.myapplication;

import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.Toast;
import android.widget.ToggleButton;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private EditText mNameEditText;
    private RadioGroup mSexRadioGroup;
    private CheckBox mHotCheckBox, mFishCheckBox,mSourCheckBox;
    private SeekBar mSeekBar;
    private Button mSearchButton;
    private ImageView mFoodImageView;
    private ToggleButton mToggleButton;
    private List<Food> mFoods;
    private Person mPerson;
    private List<Food> mFoodResult;
    private int mPrice;
    private boolean misHot;
    private boolean misSour;
    private boolean misFish;
    private int mCurrentIndex;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件
        findViews();

        //初始化数据
        initDate();

        //为控件添加监听器,实现基本功能
        setListeners();

        //自测
    }

    private void initDate() {
        //new 出空的食物列表
        mFoods = new ArrayList<>();

        //初始化添加所有的数据
        mFoods.add(new Food("麻辣香锅",55,R.drawable.malaxiangguo,true,false,false));
        mFoods.add(new Food("水煮鱼",48,R.drawable.shuizhuyv,true,true,false));
        mFoods.add(new Food("麻辣火锅",80,R.drawable.malahuoguo,true,true,false));
        mFoods.add(new Food("清蒸鲈鱼",68,R.drawable.qingzhengluyv,false,true,false));
        mFoods.add(new Food("桂林米粉",15,R.drawable.guilinmifen,false,false,false));
        mFoods.add(new Food("上汤娃娃菜",28,R.drawable.shangtangwawacai,false,false,false));
        mFoods.add(new Food("红烧肉",60,R.drawable.hongshaorou,false,false,false));
        mFoods.add(new Food("木须肉",40,R.drawable.muxurou,false,false,false));
        mFoods.add(new Food("酸菜牛肉面",35,R.drawable.suancainiuroumian,false,false,true));
        mFoods.add(new Food("西芹炒百合",38,R.drawable.xiqinchaobaihe,false,false,false));
        mFoods.add(new Food("酸辣汤",40,R.drawable.suanlatang,true,false,true));

        mPerson = new Person();

        mFoodResult = new ArrayList<>();

    }
    private void setListeners() {
        //editText加入监听
        mNameEditText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if(mPerson != null){
                    mPerson.setName(s.toString());
                }
            }
        });

        //设置单选框Listener
        mSexRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
                switch (checkedId){
                    case R.id.maleRadioButton:
                        mPerson.setSex("男");
                        break;
                    case R.id.femaleRadioButton:
                        mPerson.setSex("女");
                        break;
                }
            }
        });

        //设置复选框Listener
        mFishCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                misFish  = isChecked;
            }
        });
        mSourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                misSour  = isChecked;
            }
        });
        mHotCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                misHot  = isChecked;
            }
        });

        mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean isChecked) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                mPrice = seekBar.getProgress();
                Toast.makeText(MainActivity.this, "价格:" + mPrice, Toast.LENGTH_SHORT).show();
            }
        });

        mSearchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                search();
            }
        });

        mToggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if(mToggleButton.isChecked()){
                    //下一个菜
                    mCurrentIndex++;
                    if(mCurrentIndex < mFoodResult.size()){
                        mFoodImageView.setImageResource(mFoodResult.get(mCurrentIndex).getPic());
                    }else{
                        Toast.makeText(MainActivity.this, "没了" , Toast.LENGTH_SHORT).show();

                    }
                }else{
                    //显示信息:菜品名称
                    if(mCurrentIndex < mFoodResult.size()){
                        String foodName = mFoodResult.get(mCurrentIndex).getName();
                        int foodPrice = mFoods.get(mCurrentIndex).getPrice();
                        Toast.makeText(MainActivity.this, "菜品:" +foodName + ", 价格:" + foodPrice + "元", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this, "没了" , Toast.LENGTH_SHORT).show();

                    }
                }
            }
        });
    }
    //查找菜品
    private void search() {
        //遍历菜品
        //符合,加入列表
        //结果每次清空
        
        //如果为空,先初始化
        if(mFoodResult == null){
            mFoodResult = new ArrayList<>();
        }
        
        //先清除之前的结果
        mFoodResult.clear();
        //当前显示结果中的第几道菜
        mCurrentIndex = 0;

        for (int index = 0; index < mFoods.size(); index++) {
            Food food = mFoods.get(index);
            if(food != null){
                //价格小于设定的价格
                //顾客选择的口味
                if(food.getPrice() < mPrice && (food.isHot()) == misHot || food.isFish() == misFish || food.isSour() == misSour){
                    mFoodResult.add(food);
                }
            }
        }
        //先显示第一张图片
        if(mCurrentIndex < mFoodResult.size()){
            mFoodImageView.setImageResource(mFoodResult.get(mCurrentIndex).getPic());
        }
    }

    private void findViews() {
        mNameEditText = findViewById(R.id.nameEditText);
        mSexRadioGroup = findViewById(R.id.SexRadioGroup);
        mHotCheckBox = findViewById(R.id.hotCheckBox);
        mFishCheckBox = findViewById(R.id.fishCheckBox);
        mSourCheckBox = findViewById(R.id.sourCheckBox);
        mSeekBar = findViewById(R.id.seekBar);
        mSeekBar.setProgress(30);
        mSearchButton = findViewById(R.id.searchButton);
        mFoodImageView = findViewById(R.id.foodImageView);
        mToggleButton = findViewById(R.id.showToggleButton);
        mToggleButton.setChecked(true);

    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值