• 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

  • 相关阅读:
    IoT(Internet of things)物联网入门介绍
    SIP协议解析
    nginx内核优化参考
    下线注册中心微服务
    vscode配置vue+eslint自动保存去除分号,方法与括号间加空格,使用单引号
    linux常见故障整理
    部署Glusterfs
    解决 eslint 与 webstrom 关于 script 标签的缩进问题
    单个maven项目使用阿里云镜像方法
    idea启动tomcat日志乱码解决办法
  • 原文地址:https://www.cnblogs.com/esllovesn/p/12205291.html
Copyright © 2020-2023  润新知