124 lines
3.2 KiB
Java
124 lines
3.2 KiB
Java
package dbfields;
|
||
|
||
import android.content.Context;
|
||
import android.os.Parcel;
|
||
import android.os.Parcelable;
|
||
import android.util.AttributeSet;
|
||
import android.widget.EditText;
|
||
|
||
import java.text.ParseException;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.Date;
|
||
|
||
public class DateTimeText extends EditText implements fieldDB
|
||
{
|
||
private String m_Value = null;
|
||
|
||
public DateTimeText(Context context)
|
||
{
|
||
super(context);
|
||
}
|
||
public DateTimeText(Context context, AttributeSet attrs)
|
||
{
|
||
super(context,attrs);
|
||
}
|
||
|
||
public String getValue(){
|
||
return m_Value;
|
||
}
|
||
|
||
public void setValue(String val)
|
||
{
|
||
m_Value = null; //Присваиваю ниже так как нужно только проверянное значение даты
|
||
if(val!=null && !val.equals(""))
|
||
{
|
||
Date date=null;
|
||
try {
|
||
date = new Date(Long.parseLong(val)*1000);
|
||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Теперь для простого преобразования в тип даты PostgreSQL дату храню в виде текста в формате "yyyy-MM-dd HH:mm:ss"
|
||
m_Value=format.format(date);
|
||
} catch (NumberFormatException e) {
|
||
}
|
||
if(date==null){
|
||
try {
|
||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||
date = format.parse(val);
|
||
m_Value = val;
|
||
} catch (ParseException e) {
|
||
}
|
||
}
|
||
if(date!=null) {
|
||
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); //Убрал секунды так всё равно то что отображается не соответствует тому что храниться
|
||
String str = format.format(date);
|
||
setText(str);
|
||
}else{
|
||
setText("");
|
||
}
|
||
}else
|
||
{
|
||
setText("");
|
||
}
|
||
}
|
||
|
||
// Класс для сохранения изменений сделаных пользователем при повороте экрана
|
||
public static class SavedStateDTT extends BaseSavedState
|
||
{
|
||
String value = ""; //Не может быть null почемуто вылетает!
|
||
|
||
SavedStateDTT(Parcelable superState)
|
||
{
|
||
super(superState);
|
||
}
|
||
|
||
@Override
|
||
public void writeToParcel(Parcel out, int flags)
|
||
{
|
||
super.writeToParcel(out, flags);
|
||
out.writeString(value);
|
||
}
|
||
|
||
public static final Parcelable.Creator<SavedStateDTT> CREATOR = new Parcelable.Creator<SavedStateDTT>()
|
||
{
|
||
public SavedStateDTT createFromParcel(Parcel in)
|
||
{
|
||
return new SavedStateDTT(in);
|
||
}
|
||
public SavedStateDTT[] newArray(int size)
|
||
{
|
||
return new SavedStateDTT[size];
|
||
}
|
||
};
|
||
|
||
private SavedStateDTT(Parcel in)
|
||
{
|
||
super(in);
|
||
value = in.readString();
|
||
}
|
||
|
||
}
|
||
|
||
@Override
|
||
public Parcelable onSaveInstanceState()
|
||
{
|
||
SavedStateDTT st = new SavedStateDTT(super.onSaveInstanceState());
|
||
st.value = getValue();
|
||
if(st.value==null) st.value="";
|
||
return st;
|
||
}
|
||
|
||
@Override
|
||
public void onRestoreInstanceState(Parcelable state)
|
||
{
|
||
if (state == null || !(state instanceof SavedStateDTT))
|
||
{
|
||
super.onRestoreInstanceState(state);
|
||
return;
|
||
}
|
||
|
||
SavedStateDTT ss = (SavedStateDTT) state;
|
||
super.onRestoreInstanceState(ss.getSuperState());
|
||
setValue(ss.value);
|
||
};
|
||
|
||
}
|