package com.sloydev.preferator.editor; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.EditText; import android.widget.FrameLayout; import com.sloydev.preferator.R; public class FloatPrefEditor extends FrameLayout { private EditText valueView; private OnFloatValueChangeListener onFloatValueChangeListener; public FloatPrefEditor(Context context) { this(context, null); } public FloatPrefEditor(Context context, AttributeSet attrs) { this(context, attrs, 0); } public FloatPrefEditor(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { LayoutInflater.from(getContext()).inflate(R.layout.item_editor_float, this, true); valueView = (EditText) findViewById(R.id.pref_value); valueView.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if (onFloatValueChangeListener != null) { try { Float number; if (charSequence != null) { number = Float.parseFloat(charSequence.toString()); } else { number = 0f; } onFloatValueChangeListener.onValueChange(number); valueView.setError(null); } catch (NumberFormatException e) { valueView.setError("Wrong integer format"); } } } @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { } }); } public void setValue(Float value) { valueView.setText(value.toString()); } public Float getValue() { return Float.parseFloat(valueView.getText().toString()); } public void setOnFloatValueChangeListener(OnFloatValueChangeListener onLongValueChangeListener) { this.onFloatValueChangeListener = onLongValueChangeListener; } public interface OnFloatValueChangeListener { void onValueChange(Float newValue); } }