RequiredHelper --> Sind alle Pflichfelder ausgefüllt

  • Antworten:0
Fabian Simon
  • Forum-Beiträge: 359

26.01.2016, 18:14:04 via Website

Hallo,

habe ein Klasse geschrieben mit der Mann Schnell pflichtfelder definieren und diese auf inhalt prüfen lassen kann.
Ist sicher noch erweiterbar und man kann noch viel dran basteln.
Aber so denke ich sollte es leuten auch schonmal helfen.

package de.fasibio.sshoneclick.viewHelper;

import android.app.Activity;
import android.view.View;
import android.widget.EditText;

import java.util.ArrayList;
import java.util.List;



/**
 * Created by fasibio on 23.01.2016.
 */
public class RequiredHelper {

    /**
     * eine Liste alle Felder die als Pflichfeld hinzugefuegt wurden
     */
    private List<EditText> fields = new ArrayList<EditText>();

    public  EditText addRequiredField(EditText requiredfield){
        requiredfield.setOnFocusChangeListener(new FocusChangeListener());
        fields.add(requiredfield);
        return requiredfield;
    }

    /**
     * Liefert zureuck ob eins der Felder noch nicht ausgefuellt wurde
     * @return
     */
    public boolean hasFieldAnError(){
        return hasFieldAnError(false);
    }

    /**
     * Liefert zureuck ob Felder noch nicht ausgefuellt wurde
     * @param showerrorText wenn true wird der String R.string.requirederror als error den einzelnen Feldern hinzugefuegt
     *
     * @return
     */
    public boolean hasFieldAnError(boolean showerrorText){
        boolean result = false;
        for (EditText one : fields){
            if (isFieldEmpty(one)){
                result = true;
                if (showerrorText){
                    one.setError(StaticObject.getResString(R.string.requirederror));
                }else{
                    break;
                }
            }
        }
        return result;
    }

    private boolean isFieldEmpty(EditText field){
        return field.getText().toString().trim().equals("");
    }


    private class FocusChangeListener implements View.OnFocusChangeListener{

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (v instanceof  EditText){
                EditText tmp = (EditText)v;
                if (!tmp.hasFocus()){
                    if (isFieldEmpty(tmp)){
                        tmp.setError(StaticObject.getResString(R.string.requirederror));
                    }
                }
            }
        }
    }
}

Aufgerufen wir dann das ganze so:

 requiredHelper = new RequiredHelper();
        requiredHelper.addRequiredField(getEditText(R.id.edtname));
        requiredHelper.addRequiredField(getEditText(R.id.edtport));
        requiredHelper.addRequiredField(getEditText(R.id.edthost));

und für eine Überprüfung:

requiredHelper.hasFieldAnError(true)

oder

requiredHelper.hasFieldAnError()

Antworten