Android Edittext con detección automática de tipo de tarjeta de crédito
Estoy tratando con la opción de pago en android, Por dar una opción para hacer un pago con tarjeta de crédito, algunos de los usuarios pueden equivocadamente elegir diferentes tipos de tarjetas de crédito para otro número de tarjeta de crédito, así que decidí echar un vistazo a este problema a Auto detectar el tipo de tarjeta basado en el número introducido,
He encontrado Flipkart tener esto ya en su aplicación Android, aquí adjunto esa funcionalidad,
- Los espacios no funcionan cuando se utiliza la API de autocompletar de Google Places
- ¿Actualizar dinámicamente el cuadro de autocompletar en Android?
- Android AutoCompleteTextView con correo electrónico no
- Android Studio - Autocompletar de XML Editor no funciona con bibliotecas de soporte
- Cómo reemplazar MultiAutoCompleteTextView lista desplegable
Cómo hacer esto como una animación sucediendo mientras se cambia el tipo de tarjeta?
Sé para hacer un observador del texto y basado en la entrada para cambiar el tipo de tarjeta con una imagen drawableRight para EditText.
Pero hay que hacer algo de animación sobre drawableRight.
Ayuda apreciada ..!
- Posible autocompletar una EditTextPreference?
- Cómo utilizar el API AutocompleteFilter de Android Places
- Eclipse 3.6 frecuentemente se bloquea durante Content Assist
- ¿Quieres eliminar palabras de UserDictionary?
- Autocompletar de Android EditText del servidor
- ¿Cómo personalizar el mecanismo de sugerencias automáticas "chips", como se usa en el campo de destinatarios de Gmail?
- Haga que ADT Code Assist funcione como autocompletar Xcode
- ¿Cómo mejorar el rendimiento de google lugares autocompletar sugerencias?
De la ayuda de las respuestas anteriores y la sugerencia he logrado el resultado,
Aquí está la solución:
Crear una función para la creación de regex
public static ArrayList<String> listOfPattern() { ArrayList<String> listOfPattern=new ArrayList<String>(); String ptVisa = "^4[0-9]$"; listOfPattern.add(ptVisa); String ptMasterCard = "^5[1-5]$"; listOfPattern.add(ptMasterCard); String ptDiscover = "^6(?:011|5[0-9]{2})$"; listOfPattern.add(ptDiscover); String ptAmeExp = "^3[47]$"; listOfPattern.add(ptAmeExp); return listOfPattern; } Integer[] imageArray = { R.drawable.visa, R.drawable.master, R.drawable.disnet, R.drawable.ae };
Utilice este código debajo de addTextChangedListener
creditcardnumberedittext.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String ccNum = s.toString(); if(ccNum.length()>=2) { for (int i = 0; i < listOfPattern.size(); i++) { if (ccNum.substring(0, 2).matches(listOfPattern.get(i))) { creditcardnumberedittext.setCompoundDrawablesWithIntrinsicBounds(0, 0, imageArray[i], 0); cardtype = String.valueOf(i); } } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { if (!creditcardnumberedittext.getText().toString().equalsIgnoreCase("")) { for (int i = 0; i < listOfPattern.size(); i++) { if (creditcardnumberedittext.getText().toString().matches(listOfPattern.get(i))) { creditcardnumberedittext.setCompoundDrawablesWithIntrinsicBounds(0, 0, imageArray[i], 0); cardtype = String.valueOf(i); } } } else { creditcardnumberedittext.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.allcards, 0); } } });
Gracias..
No hay ninguna funcionalidad nativa para eso. TextWatcher
establecer la clase EditText
en EditText
. Lo que hace es establecer un oyente en su campo ya medida que escribe le da un método para comprobar la entrada.
yourEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { //Check your Credit Card Number here. } });
Usted estaría viendo el texto tal como está ingresado, verificando los primeros dígitos para coincidir con los códigos encontrados aquí:
http://www.stevemorse.org/ssn/List_of_Bank_Identification_Numbers.html
Esto se puede hacer con el oyente de TextWatcher que Murtaza Hussain ha señalado.
Revise el texto a través de:
switch (s.charAt(0)){ case '4': // show visa symbol break; case '5': // show mastercard symbol break; ...
- Samsung galaxy no se detecta en eclipse adt
- Uso de Admob en la aplicación de Android: varios archivos dex definen