InputFilter para formatar um campo de Hora

1 resposta
javer

Alguém pode me dar uma ajuda nisso?

Tenho um campo hora (time) que será digitada a hora, quero que conforme vá digitando vá formatando (colocando o : ), porém não está funcionando, o que está errado?

Filtro:
package com.worker.meuponto.util;

import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextUtils;

public class HoraInputFilter implements InputFilter {
	int tamanho = 0;

	public HoraInputFilter() {

	}

	public HoraInputFilter(int tamanho) {
		this.tamanho = tamanho;
	}

	public CharSequence filter(CharSequence source, int start, int end,
			Spanned dest, int dstart, int dend) {

		char[] v = new char[end - start];
		TextUtils.getChars(source, start, end, v, 0);
		String s = new String(v);
		System.out.println("String: " + s);
		if (s.length() == 2) { // 14
			s = s + ":";
		}
		if (s.length() == 5) { // 14:33
			s = s + ":";
		}
		
		if (s.length() > 8) {
			s = s.substring(0, 8);
		}
		return s;
	}
}
No meu Activity:
EditText campoHoraEntrada = (EditText) findViewById(R.id.campoHoraEntrada);
campoHoraEntrada.setFilters( new InputFilter[]{ new HoraInputFilter() } );
XML:
<EditText
                   android:id="@+id/campoHoraEntrada"
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:ems="10" 
                   android:maxLength="10"
                   android:inputType="text" />

Simplesmente não funciona

1 Resposta

javer
Acho que encontrei:
@Override
	protected void onResume() {		
		super.onResume();
		

		final Handler mHandler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				
				String timeString = new SimpleDateFormat("HH:mm:ss").format(new Date());
				((TextView) findViewById(R.id.campoTeste)).setText(timeString);
			}
		};
		
		int initialDelay = 1000; 
		int period = 1000;             

		Timer timer = new Timer();
		TimerTask task = new TimerTask() {
		  public void run() {
		      Message msg = new Message();
		      mHandler.sendMessage(msg);
		  }
		};
		timer.scheduleAtFixedRate(task, initialDelay, period);
	}
Criado 18 de abril de 2013
Ultima resposta 16 de jan. de 2014
Respostas 1
Participantes 1