Git Product home page Git Product logo

canarinho's People

Contributors

3duard0 avatar cs-bruno-silva avatar cs-diego-caetano avatar cs-pedrohfp avatar cs-rafael-toledo avatar cs-thiago-pinho avatar cs-victor-nascimento avatar designsystembot avatar diegoferreiracaetano avatar leonardortlima avatar mobiplus-tech avatar pedrohfp96 avatar philipesteiff avatar rafaeltoledo avatar tpinho avatar victorolinasc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

canarinho's Issues

Não é possivel baixar a Dependencia

E ai pessoal, estou tentando utilizar a lib, ao add ao projeto,
Após sincronização do gradle, estou tomando o seguinte erro:

Error:(128, 20) Failed to resolve: br.com.concrete:canarinho:2.0.0

Ha um exemplo de configuração utilizando a dependencia?
implementation 'br.com.concrete:canarinho:2.0.0'

br.com.concretesolutions.canarinho.watcher.BaseCanarinhoTextWatcher.trataRemocaoDeCaracter

java.lang.ArrayIndexOutOfBoundsException: length=51; index=52
at br.com.concretesolutions.canarinho.watcher.BaseCanarinhoTextWatcher.trataRemocaoDeCaracter(BaseCanarinhoTextWatcher.java:139)
at br.com.concretesolutions.canarinho.watcher.BaseCanarinhoTextWatcher.trataAdicaoRemocaoDeCaracter(BaseCanarinhoTextWatcher.java:109)
at br.com.concretesolutions.canarinho.watcher.BoletoBancarioTextWatcher.afterTextChanged(BoletoBancarioTextWatcher.java:67)
at android.widget.TextView.sendAfterTextChanged(TextView.java:8017)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10178)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:225)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:224)
at android.text.method.BaseKeyListener.backspaceOrForwardDelete(BaseKeyListener.java:106)
at android.text.method.BaseKeyListener.backspace(BaseKeyListener.java:51)
at android.text.method.BaseKeyListener.onKeyDown(BaseKeyListener.java:215)
at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:138)
at android.widget.TextView.doKeyDown(TextView.java:6106)
at android.widget.TextView.onKeyDown(TextView.java:5919)
at android.view.KeyEvent.dispatch(KeyEvent.java:2654)
at android.view.View.dispatchKeyEvent(View.java:9237)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.widget.ScrollView.dispatchKeyEvent(ScrollView.java:379)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2395)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1727)
at android.app.Activity.dispatchKeyEvent(Activity.java:2729)
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:543)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:53)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:315)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:53)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4139)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4101)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3654)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3707)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3673)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3799)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3681)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3856)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3654)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3707)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3673)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3681)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3654)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5969)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5908)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5869)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3446)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

Validador de Telefone

Atualmente o validador de telefone contempla números com 9 dígito?
Estou utilizando o validador de telefone, entretanto, mesmo o número estando parcialmente incompleto, o callback de ehValido é chamado.

Segue o trecho de código:

appCompatEditTextPhoneSecondary.addTextChangedListener(new MascaraNumericaTextWatcher.Builder() .paraMascara("(##) #####-####") .build())

Para teste, utilize esse número de exemplo: 21980777957

@cs-victor-nascimento

Exceção disparada: Method clear in android.util.SparseArray not mocked.

Em cenários de testes unitários com JUnit 4 que utilizem a classe ValidadorCPFCNPJ.java, a seguinte exceção é disparada:

Caused by: java.lang.RuntimeException: Method clear in android.util.SparseArray not mocked. See http://g.co/androidstudio/not-mocked for details.
	at android.util.SparseArray.clear(SparseArray.java)
	at br.com.concrete.canarinho.DigitoPara$Builder.trocandoPorSeEncontrar(DigitoPara.java:202)
	at br.com.concrete.canarinho.validator.ValidadorCPF.<clinit>(ValidadorCPF.java:18)
	... 56 more

Uma solução possível seria alterar na classe DigitoPara.java na linha 133, conforme abaixo

private final SparseArray<String> substituicoes = new SparseArray<String>();

para

private final SparseArrayCompat<String> substituicoes = new SparseArrayCompat<String>();

Desta forma, poderá ser usada em testes unitários na JVM.
https://developer.android.com/reference/android/support/v4/util/SparseArrayCompat.html

É realmente necessário ter um validador e um evento de validação na mascara numérica?

Olhando o código e testando em uma aplicação que criei, percebi que sempre que se usa uma mascara numérica faz-se necessário um Validador e um EventoDeValidacao. Mas algumas vezes a mascara numérica já supre a necessidade ou não é possível fazer uma validação (como por exemplo em uma mascara de campo para identidade, já que a estrutura de identidade pode ser diferente em diferentes estados do Brasil). Então queria questionar a obrigatoriedade de usar um Validador e um EventoDeValidacao.

[DISCUSSÃO] Valores Inversos

Alguém poderia me informar se tem como por valores inversos, vou explicar

digitei: 12000

A - 1
B - 12
C - 120
D - 1.200
E - 12.000

Lib com plugin java somente

Seria interessante quebrar a lib em duas uma somente com os formatadores e verificadores e afins que não precisem depender do android em si, e outra com as funcionalidades usadas no android em si onde ela depende desta outra primeira lib

Lib Android <-------Lib Java

Desta maneira a mesma poderia ser usada no próprio backend alguém precise de alguma validação ou formatar algo

Manter simbolo Real e somente teclado numérico

Quando seto na view como o exemplo:

<android.support.design.widget.TextInputEditText
android:id="@+id/amount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_value"
android:inputType="textFilter|number"
android:maxLength="13"
android:text="0,00" />

se manter somente android:inputType="textFilter|number" o simbolo de Real não é visível.

O simbolo somente é visivel se remover o inputType "number" e colocar "text" da seguinte forma:

android:inputType="textFilter|text"

Gostaria de manter o simbolo de Real mas com teclado somente numérico, é possível?

Obrigado

Formatador/Desformatador CPF - CPFs começando com Sequências de zeros salvos em formato numérico

Olá!

Estava usando sua lib em um projeto simples acadêmico e obtive um erro ao usar certos CPFs salvos em tipo Long em um ArrayList. No caso, os CPFs que foram salvos começam em sequências de um ou mais zeros e os tipos numéricos desconsideram Esses zeros no começo da sequência. Quando o sistema se deparou com esses dados no preenchimento de um RecyclerView, obtive

java.lang.IllegalArgumentException: Valor não está formatado propriamente.

Para contornar o problema, coloquei manualmente uma checagem em meu Adapter pra esse campo, mas acho interessante incluir isso na checagem do formatador dentro da própria lib.

A checagem que fiz (de maneira não muito elaborada, claro), adiciona os zeros faltantes no começo do valor antes da formatação, conforme abaixo:

`

if (String.valueOf(clientes.get(position).getCpf()).length() < 11) {

    String cpf = String.valueOf(clientes.get(position).getCpf());

    int tamanho = cpf.length();

    while (tamanho < 11) {

            cpf = "0" + cpf;

            tamanho++;

    }

        holder.cpfTextView.setText("CPF: " + Formatador.CPF.formata(cpf));

    } else {

        holder.cpfTextView.setText("CPF: " + Formatador.CPF.formata(String.valueOf(clientes.get(position).getCpf())));

}

`

FORMATADOR_MOEDA falha com um NPE na API 28

Describe the bug
Na API 28, o FORMATADOR_MOEDA falha com um NPE, aparentemente devido a alguma mudança de comportamento não desejada na implementação de NumberFormat.

To Reproduce

// Executando no Android P
final String value = "1.000.000,00";
assertEquals("1000000.00", Formatador.VALOR.desformata(value));

Additional context
Bug aberto no issue tracker do Android

Números negativos no Watcher Monetário

Primeiramente, obrigado pela biblioteca é de grande ajuda!

Estou tentando implementar a formatação para valores monetários, porém, não consigo adicionar valores negativos.
Exemplo: - R$ 100,00 ou R$ -100,00

Existe alguma forma de fazer isto na biblioteca?

Obrigado !

Múltiplas máscaras

A lib consegue suportar múltiplas máscaras para um mesmo EditText e ir se adequando a mais provável de acordo com o dado inserido? Ou seja, determinar qual deve ser aplicada dentre as máscaras de um conjunto, ex.: Sem o nono dígito "(##) ####-####" e com o nono dígito "(##) # ####-####"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.