ใช้ for loop ในการ Validate Edittext Android


สวัสดีครับ  หลายๆคนอาจจะเคยใช้ใช้งาน Edittext ที่เป็น Widget ตัวนึงบน Android กันมาบ้างแล้ว  ซึ่งการใช้งาน Edittext หรือช่องกรอกข้อความนั้น  ส่วนใหญ่แล้วจะต้องมีการดักข้อมูล (Validate) เพื่อดักข้อมูลที่ไม่ต้องการออกไป  เช่น  ข้อมูลเบอร์โทรศัพท์  จะเอาแต่ตัวเลขไม่เอาอักขระและ Edittext ห้ามว่าง , ข้อมูลอีเมลล์  จะต้องเป็นโครงสร้างมี @.com เช่น test@gmail.com  ซึ่งถ้าเกิดว่า Edittext นั้นมีน้อยก็ไม่มีปัญหาอะไรเพราะว่าสามารถใส่เงื่อนไขต่างๆ  อย่างไม่ยากเย็นอะไร  แต่ถ้ามี Edittext สัก 10 - 20 ตัวขึ้นไปอันนี้เหนื่อยแน่  เพราะต้องมาใส่เงื่อนไขทุกตัว


ไฟล์ activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="EditText1"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textColor="@android:color/black" />

    <EditText
        android:id="@+id/edt_text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="EditText2"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textColor="@android:color/black" />

    <EditText
        android:id="@+id/edt_text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="EditText3"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textColor="@android:color/black" />

    <EditText
        android:id="@+id/edt_text3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" />

    <Button
        android:id="@+id/btn1"
        android:onClick="Check_EditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="@color/colorPrimary"
        android:text="Check"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

</LinearLayout>

ไฟล์ MainActivity.java
public class MainActivity extends AppCompatActivity {

    EditText edt_text1, edt_text2, edt_text3;

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

        edt_text1 = findViewById(R.id.edt_text1);
        edt_text2 = findViewById(R.id.edt_text2);
        edt_text3 = findViewById(R.id.edt_text3);
    }

    public void Check_EditText(View view) {
        EditText edt_array[] = {edt_text1, edt_text2, edt_text3};

        for (int i = 0; i < edt_array.length; i++) {
            if (edt_array[i].getText().toString().trim().isEmpty()) {
                edt_array[i].setError("Edittext" + (i + 1) + " is empty");
                edt_array[i].requestFocus();
                return;
            }
        }

        Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
    }
}

หวังว่าจะเป็นประโยชน์ต่อใครหลายๆคนนะครับ  การใช้ for loop นั้นไม่ได้ใช้ได้เฉพาะกับ Edittext อย่างเดียว  แต่สามารถนำไปใช้ได้หลายอย่าง แต่ที่เห็นชัดๆ ก็คงจะเป็น String เพราะตามตัวอย่างหลายๆ ที่ก็จะใช้ String กัน ^^

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การรับค่า ส่งค่าจากหน้าที่ 1 ไปหน้าที่ 2 บน Flutter (How to pass data between screens in Flutter?)

การจับเวลาบน Flutter ทำยังไง (How to count up timer flutter?)

วิธีการสลับข้อมูล MySQL ในคอลัมน์เดียวกัน