# 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 项目实现学生增加显示

# Android: ListView 学生管理

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;
    }

演示

# Android: ListView 学生管理# Android: ListView 学生管理

# Android: ListView 学生管理

代码下载地址

ListViewApp

# Android: ListView 学生管理

上一篇:TouchAction的花式应用——APP九宫格绘制


下一篇:ios中隐藏导航栏后,modal时出现白色闪动