栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android Studio 实验三:水果店

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Studio 实验三:水果店

目录

activity_main.xml

Activity

Fruit和Person类

 Fruit

 Person

 运行截图

项目文件


activity_main.xml



    

    

        

            

            

        

        

            

            

                

                

                
            

        

        

            

            

                

                

                

            

        

        

            

            
                
                
                

            

        

        

            

            
                
                
                

            

        

        

Activity
public class MainActivity extends AppCompatActivity{

    private EditText mNameEditText;
    private RadioGroup mSexRadioGroup;
    private CheckBox tropicalCheckBox, subtropicalCheckBox, temperateCheckBox;
    private SeekBar mSeekBar;
    private Button mSearchButton;
    private ImageView fruitImageView;
    private ToggleButton mToggleButton;
    private List fruits;
    private Person mPerson;
    private List fruitdResults;
    private boolean isTropical;
    private boolean isSubtropical;
    private boolean isTemperate;
    private int mPrice;
    private int mCurrentIndex;

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

        // 初始化控件
        findViews();
        // 初始化数据
        initData();
        // 为控件添加监听器,实现基本功能
        setListeners();

    }

    private void initData() {
        // new 出来一个空的水果 list
        fruits = new ArrayList<>();

        // 初始化添加所有的数据
        // 热带水果
        fruits.add(new Fruit("柠檬", 55, R.mipmap.lenmo, true, false, false));
        fruits.add(new Fruit("芒果", 80, R.mipmap.mango, true, false, false));
        fruits.add(new Fruit("菠萝", 68, R.mipmap.pineapple, true, false, false));
        // 亚热带水果
        fruits.add(new Fruit("荔枝", 43, R.mipmap.litchi, false, true, false));
        fruits.add(new Fruit("杨梅", 34, R.mipmap.waxberry, false, true, false));
        fruits.add(new Fruit("杨桃", 22, R.mipmap.carambola, false, true, false));
        // 温带水果
        fruits.add(new Fruit("桃子", 58, R.mipmap.peach, false, false, true));
        fruits.add(new Fruit("李子", 74, R.mipmap.plum, false, false, true));
        fruits.add(new Fruit("柿子", 12, R.mipmap.persimmon, false, false, true));
        mPerson = new Person();

        fruitdResults = new ArrayList<>();
    }

    private void findViews() {
        mNameEditText = findViewById(R.id.nameEditText);
        mSexRadioGroup = findViewById(R.id.sexRadioGroup);
        tropicalCheckBox = findViewById(R.id.tropicalCheckBox);
        subtropicalCheckBox = findViewById(R.id.subtropicalCheckBox);
        temperateCheckBox = findViewById(R.id.temperateCheckBox);
        mSeekBar = findViewById(R.id.seekBar);
        mSeekBar.setProgress(30);
        mSearchButton = findViewById(R.id.searchButton);
        mToggleButton = findViewById(R.id.showToggleButton);
        mToggleButton.setChecked(true);
        fruitImageView = findViewById(R.id.fruitsImageView);
    }

    private void setListeners() {
        // 设置单选框listener
        mSexRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.maleRadioButton:
                        mPerson.setSex("男");
                        break;
                    case R.id.femaleRadioButton:
                        mPerson.setSex("女");
                        break;
                }
            }
        });
        // 设置复选框listener
        tropicalCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // 检测复选框是否选中
                isTropical = isChecked;
            }
        });
        subtropicalCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                isSubtropical = isChecked;
            }
        });
        temperateCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                isTemperate = isChecked;
            }
        });

        // 设置seekBar的监听
        mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            // 过程中触发
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            }
            // 刚开始触发
            @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 v) {
                search();
            }
        });

        mToggleButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mToggleButton.isChecked()) {
                    //  下一个
                    mCurrentIndex++;
                    if (mCurrentIndex < fruitdResults.size()) {
                        // 改变当前图片资源
                        fruitImageView.setImageResource(fruitdResults.get(mCurrentIndex).getPic());
                    } else {
                        Toast.makeText(MainActivity.this, "没有啦", Toast.LENGTH_SHORT).show();

                    }
                } else {
                    // 显示信息:水果的名称
                    if (mCurrentIndex < fruitdResults.size()) {
                        Toast.makeText(MainActivity.this, "水果名: " + fruitdResults.get(mCurrentIndex).getName(), Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(MainActivity.this, "没有啦", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }

    // 查找水果
    private void search() {
        // 结果列表每次都清空
        // 遍历所有水果
        // 如果符合条件,则加入到我们的结果列表中

        // 如果为空,先初始化
        if (fruitdResults == null) {
            fruitdResults = new ArrayList<>();
        }

        // 先清除之前的结果
        fruitdResults.clear();
        // 当前显示的是结果中的第几个水果
        mCurrentIndex = 0;

        for (int index = 0; index < fruits.size(); index++) {
            Fruit fruit = fruits.get(index);
            if (fruit != null) {
                // 价格要小于设定的价格
                // 判断是否是顾客选择的口味

                if (fruit.getPrice() < mPrice) {
                    // 添加热带水果
                    if (isTropical) {
                        if (fruit.isTropical() == isTropical) {
                            fruitdResults.add(fruit);
                        }
                    }
                    // 添加亚热带水果
                    if (isSubtropical) {
                        if (fruit.isSubtropical() == isSubtropical) {
                            fruitdResults.add(fruit);
                        }
                    }
                    // 添加温带水果
                    if (isTemperate) {
                        if (fruit.isTemperate() == isTemperate) {
                            fruitdResults.add(fruit);
                        }
                    }


                }
            }
        }

        // 先显示第一张图片
        if (mCurrentIndex < fruitdResults.size()) {
            // 如果list有值,将显示图片换成当前的
            fruitImageView.setImageResource(fruitdResults.get(mCurrentIndex).getPic());
        } else {
            // 如果list没有值,显示默认图片
            fruitImageView.setImageResource(R.mipmap.fresh_fruit);
        }
    }

}

Fruit和Person类

创建一个Package

命名为model,回车确定

在这个包类创建两个Java类,一个命名为Fruit,一个命名为Person

 Fruit
public class Fruit {
    // 水果名称
    private String name;
    // 水果价格
    private double price;
    // 水果图片路径
    private int pic;
    // 是否是热带水果
    private boolean isTropical;
    // 是否是亚热带水果
    private boolean isSubtropical;
    // 是否是温带水果
    private boolean isTemperate;

    public Fruit(String name, double price, int pic, boolean isTropical, boolean isSubtropical, boolean isTemperate) {
        this.name = name;
        this.price = price;
        this.pic = pic;
        this.isTropical = isTropical;
        this.isSubtropical = isSubtropical;
        this.isTemperate = isTemperate;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getPic() {
        return pic;
    }

    public void setPic(int pic) {
        this.pic = pic;
    }

    public boolean isTropical() {
        return isTropical;
    }

    public void setTropical(boolean tropical) {
        isTropical = tropical;
    }

    public boolean isSubtropical() {
        return isSubtropical;
    }

    public void setSubtropical(boolean subtropical) {
        isSubtropical = subtropical;
    }

    public boolean isTemperate() {
        return isTemperate;
    }

    public void setTemperate(boolean temperate) {
        isTemperate = temperate;
    }
}

 Person
public class Person {
    private String name;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

}

 运行截图

因为排版问题,EditText好像写不了字,不过问题不大。

项目文件

https://download.csdn.net/download/nazonomaster/85219410https://download.csdn.net/download/nazonomaster/85219410

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/838158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号