• Android : ListView 学生管理


    Android 使用 ListView 控件实现简易学生管理功能。

    使用工具

    • android studio (ver. 3.5.1)
    • android(sdk 29)
    • java(ver.1.8.0)
    • gradle(ver. 5.4.1)

    功能实现

    1.实现多个学生信息的添加和显示

    创建一个 Basic Activity 项目实现学生增加显示

    pic0

    2.用 EditText 实现姓名、年龄的输入,并有输入校验(空校验,数字校验)

    学生实体类中定义函数实现输入合法校验。

    public String mandatory(){
            if (name.equals(null) || name == "" || name.length() < 2) {
                return "姓名";
            }
            if (major.equals("请选择专业")) {
                return "专业";
            }
            if (!isNumeric(age))
                return "年龄";
            int ageInt = Integer.parseInt(age);
            if (ageInt < 10 || ageInt > 100) {
                return "年龄";
            }
            return "null";
        }
    

    3.用 AutoCompleteTextView 的实现专业的输入,并有提示功能。

     autoCompleteTextViewAddMajor = findViewById(R.id.add_major);
            String[] major_array = {"物联网工程",
                    "计算机科学与技术",
                    "材料科学与工程",
                    "环境科学与工程",
                    "化学化工与生物工程"};
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                    this,
                    android.R.layout.simple_dropdown_item_1line,
                    major_array);
            //初始化autoCompleteTextView
            autoCompleteTextViewAddMajor.setAdapter(adapter);
            //设置输入多少字符后提示,默认值为2,在此设为1
            autoCompleteTextViewAddMajor.setThreshold(1);
    

    4.通过 CheckBox 实现多门课程选择

    private LinearLayout checkbox;

    private List<String> getCheckBoxInfo(LinearLayout checkbox) {
            List<String> courses = new ArrayList<>();
            int num = checkbox.getChildCount();
            for (int i = 0; i < num; i++) {
                CheckBox cb = (CheckBox) checkbox.getChildAt(i);
                if (cb.isChecked())
                    courses.add(cb.getText().toString());
            }
            return courses;
        }
    

    5.通过 Radio 实现性别

    设置 RadioGroup 的监听。

    radioGroupSex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup rg, int checkedId) {
                    if (checkedId == radioButtonMan.getId()) {
                        sex = "男";
                    } else if (checkedId == radioButtonWoman.getId()) {
                        sex = "女";
                    } else {
                        sex = "男";
                    }
                }
            });
    

    6.用下拉框选择学院

    Layout 中 Spinner 引用 res/values 中的 college_array.xml 的中值。

    android:entries="@array/college"

    7.用日期控件实现入学时间的输入

    private Calendar calendar; // 通过Calendar获取系统时间

    点击"日期"按钮布局 设置日期。

    			editTextAddAdmissionDate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new DatePickerDialog(AddActivity.this,
                            new DatePickerDialog.OnDateSetListener() {
                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int month, int day) {
                                    mYear = year;
                                    mMonth = month;
                                    mDay = day;
                                    // 更新EditText控件日期 小于10加0
                                    editTextAddAdmissionDate.setText(new StringBuilder()
                                            .append(mYear)
                                            .append("-")
                                            .append((mMonth + 1) < 10 ? "0"
                                                    + (mMonth + 1) : (mMonth + 1))
                                            .append("-")
                                            .append((mDay < 10) ? "0" + mDay : mDay));
                                }
                            }, calendar.get(Calendar.YEAR), calendar
                            .get(Calendar.MONTH), calendar
                            .get(Calendar.DAY_OF_MONTH)).show();
                }
            });
    

    8.实现列表中学生信息的编辑和删除。

    在学生 Adapater 中重写方法。

    		@Override
        public View getView(int i, View view, ViewGroup viewGroup) {
    //创建一个 view 对象(item),对象的样式采用自定义的 layout 样式
            View stuView = View.inflate(stuContext, R.layout.list_view, null);
    ///获得 item 的每个子元素
            TextView tv_name = stuView.findViewById(R.id.name);
            TextView tv_major = stuView.findViewById(R.id.major);
            ImageView iv_edit = stuView.findViewById(R.id.edit);
            ImageView iv_delete = stuView.findViewById(R.id.delete);
    //将数据源的一项数据和 item 的子元素绑定
            Student student = (Student) stuDates.get(i);
            tv_name.setText(student.getName());
            tv_major.setText(student.getMajor());
            iv_edit.setImageResource(R.drawable.edit);
            iv_delete.setImageResource(R.drawable.delete);
    //给 iv_edit 增加一个监听
            iv_delete.setOnClickListener(this);
            iv_edit.setOnClickListener(this);
    //给删除和编辑的 imageView 设置一个标志,用 item 的位置 i 来定位,类似一个 id
            iv_delete.setTag(i);
            iv_edit.setTag(i);
            return stuView;
        }
    

    演示

    pic1pic2

    代码下载地址

    ListViewApp

  • 相关阅读:
    ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
    kali linux 2016.1 滚动更新源
    使用you-get下载视频网站视频或其他
    asp.net core开发环境准备
    Python黑客编程基础3网络数据监听和过滤
    debian(kali Linux) 安装net Core
    嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
    Python黑客编程2 入门demo--zip暴力破解
    kali linux Python开发环境初始化
  • 原文地址:https://www.cnblogs.com/esllovesn/p/12205291.html
Copyright © 2020-2023  润新知