Каков наиболее эффективный способ проверки ввода для моего кода? - PullRequest
1 голос
/ 05 марта 2019

Я пытаюсь создать приложение для Android (Минимальный уровень API 23, Android Studio 3.3.2, Использование AndroidX артефактов), где пользователь может зарегистрироваться и войти в систему;Все данные должны храниться в Cloud Firestore.

Мои требования к проверке ввода для каждого поля следующие:

  1. Имя: не может быть пустым, не может содержит пробелы и содержит только алфавиты + автоматическое использование заглавных букв для каждого символа

  2. Middlename: можно оставить пустым, может содержать пробелы и содержать только алфавиты + автоматическое использование заглавных буквкаждый символ

  3. Фамилия: не может быть пустой, не может содержать пробелы и содержит только буквы алфавита + автоматическое использование заглавных букв для каждого символа

  4. Отдел: не может быть пустым, может содержать пробелы, алфавиты и специальные символы + автоматическое использование заглавных букв для каждого символа

  5. Программа: не может быть пустым, может содержит пробелы, алфавиты и специальные символы + автоматическое использование заглавных букв для каждого символа

  6. Семестр: не может быть пустым иd может содержать только чисел в диапазоне от 0 до 9, но значение не может быть меньше 1

  7. Rollnumber: не может быть пустым, не может содержатьпробелы и буквенно-цифровой + автоматическая прописная буква каждого символа

  8. Электронная почта: не может быть пустой + должен соответствовать стандартному шаблону электронной почты

  9. Пароль: не может быть пустым, минимум 7 символов с 1 заглавными буквами, 1 строчными буквами, 1 цифрой, 1 специальным символом в качестве минимума

  10. Passconfirm: должно совпадать с паролем"поле выше

Все поля ввода выше будут сохранены в виде строки, кроме семестра, который будет целым числом

Ниже приведен мой код дляпроцесс регистрации, это рабочий код, поскольку данные успешно добавляются в базу данных, однако мне еще не удалось найти способ проверить мои данные.

Код из класса регистрации:

package com.university.smartattendance;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener
{
    EditText TextFname;
    EditText TextMname;
    EditText TextLname;
    EditText TextDept;
    EditText TextProg;
    EditText TextSemester;
    EditText TextRolln;
    EditText TextEmail;
    EditText TextPassword;
    EditText TextPasswordConfirm;

    FirebaseFirestore db = FirebaseFirestore.getInstance();

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

        TextFname= findViewById(R.id.Fname);
        TextMname= findViewById(R.id.Mname);
        TextLname= findViewById(R.id.Lname);
        TextDept= findViewById(R.id.Dept);
        TextProg= findViewById(R.id.Prog);
        TextSemester= findViewById(R.id.Semester);
        TextRolln= findViewById(R.id.Rolln);
        TextEmail= findViewById(R.id.Email);
        TextPassword= findViewById(R.id.Password);
        TextPasswordConfirm= findViewById(R.id.PasswordConfirm);

        findViewById(R.id.submitbutton).setOnClickListener(this);
    }
@Override
public void onClick (View V)
{
    String Firstname=TextFname.getText().toString().trim();
    String Middlename=TextMname.getText().toString();//Removed trimming
    String Lastname=TextLname.getText().toString().trim();
    String Department=TextDept.getText().toString().trim();
    String Programme=TextProg.getText().toString().trim();
    String Semester=TextSemester.getText().toString().trim();
    String Rollnumber=TextRolln.getText().toString().trim();
    String Email=TextEmail.getText().toString().trim();
    String Password=TextPassword.getText().toString().trim();
    String Passconfirm=TextPasswordConfirm.getText().toString().trim();

    CollectionReference dbUsers = db.collection("Students");
    Student student = new Student
    (
            Firstname,
            Middlename,
            Lastname,
            Department,
            Programme,
            Integer.parseInt(Semester),
            Rollnumber,
            Email,
            Password,
            Passconfirm
    );
    dbUsers.add(student)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>()
        {
            @Override
            public void onSuccess(DocumentReference documentReference)
            {
                Toast.makeText(RegisterActivity.this,"Successfully Registered", Toast.LENGTH_LONG).show();
            }
        }).addOnFailureListener(new OnFailureListener()
            {
                @Override
                public void onFailure(@NonNull Exception e)
                {
                    Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();

            }
            });
                }
}

Код из класса ученика:

package com.university.smartattendance;

public class Student
{
    private String Firstname,Middlename,Lastname,Department,Programme;
    private int Semester;
    private String Rollnumber,Email,Password,Passconfirm;

public Student()
{

}

public Student(String firstname, String middlename, String lastname, String department, String programme, int semester, String rollnumber, String email, String password, String passconfirm)
{
    Firstname = firstname;
    Middlename = middlename;
    Lastname = lastname;
    Department = department;
    Programme = programme;
    Semester = semester;
    Rollnumber = rollnumber;
    Email = email;
    Password = password;
    Passconfirm = passconfirm;
}

public String getFirstname()
{
    return Firstname;
}

public String getMiddlename()
{
    return Middlename;
}

public String getLastname()
{
    return Lastname;
}

public String getDepartment()
{
    return Department;
}

public String getProgramme()
{
    return Programme;
}

public int getSemester()
{
    return Semester;
}

public String getRollnumber()
{
    return Rollnumber;
}

public String getEmail()
{
    return Email;
}

public String getPassword()
{
    return Password;
}

public String getPassconfirm()
{
    return Passconfirm;
}
}

Моя учетная записьФайл ttivity_regiser.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/registerform"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbarStyle="insideInset"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="44dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/Fname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="97dp"
            android:layout_marginTop="40dp"
            android:layout_marginEnd="97dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="First Name"
            android:inputType="textPersonName"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/Mname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Middle Name"
            android:inputType="textPersonName"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Fname" />

        <EditText
            android:id="@+id/Lname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Last Name"
            android:inputType="textPersonName"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Mname" />

        <EditText
            android:id="@+id/Rolln"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Roll Number"
            android:inputType="text"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Lname" />

        <EditText
            android:id="@+id/Dept"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Department"
            android:inputType="text"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Rolln" />

        <EditText
            android:id="@+id/Prog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Programme"
            android:inputType="text"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Dept" />

        <EditText
            android:id="@+id/Semester"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Semester"
            android:inputType="number"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Prog" />

        <EditText
            android:id="@+id/Email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Email"
            android:inputType="textEmailAddress"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Semester" />

        <EditText
            android:id="@+id/Password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="99dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="99dp"
            android:ems="10"
            android:hint="Password"
            android:inputType="textPassword"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Email"
            android:autofillHints="" />

        <EditText
            android:id="@+id/PasswordConfirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="97dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="97dp"
            android:autofillHints=""
            android:ems="10"
            android:hint="Re-enter Password"
            android:inputType="textPassword"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/Password" />

        <Button
            android:id="@+id/submitbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="159dp"
            android:layout_marginTop="22dp"
            android:layout_marginEnd="160dp"
            android:text="Submit"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/PasswordConfirm" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

Попробуйте это [1]. https://github.com/thyrlian/AwesomeValidation

Имеет валидаторы, использующие текстовые наблюдатели и текстовые вводы.

И вы также можете использовать Textinputlayout и текстовый ввод для редактирования текста, чтобы эффективно отображать ошибки в Edittext.

0 голосов
/ 05 марта 2019

используйте textchangedlistener, тогда он покажет ошибку, если введенный текст неправильный или разный. Спасибо

edittext.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before,
        int count) {
        if(!s.equals("") ) { 
            //do your work here 
        }
}



public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {

}

public void afterTextChanged(Editable s) {

}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...