2015-02-04 18 views
5

ich mit Zahlungsoption befasse in Android, durch eine Option geben, um eine Zahlung mit Kreditkarte zu machen, einige der Benutzer fälschlicherweise kann für eine andere Kreditkartennummer verschiedene Kreditkartentypen wählen , so entschied ich mich für dieses Problem zu Auto einen Blick nehmen Sie den Kartentyp auf Nummer basierend erkennen eingegeben,Android EditText mit automatischer Erkennung von Kreditkartentyp

ich fand Flipkart dies bereits in ihrer android-Anwendung, hier ich diese Funktionalität befestigen,

androidedittext

Wie Sie dies tun, wie eine Animation beim Ändern der Karte passiert Art?

Ich kenne einen Text Beobachter zu machen und auf der Grundlage der Eingabe für EditText den Kartentyp, mit einem drawableRight Bild zu ändern.

Aber brauchen eine Animation über drawableRight zu tun.

Helps geschätzt ..!

+0

http://stackoverflow.com/questions/4172242/live-editing-of-users-input/37187857#37187857 – HenryChuang

Antwort

5

Von der Hilfe von oben Antworten und Vorschlag, den ich das Ergebnis erreicht haben,

Hier ist die Lösung:

Erstellen Sie eine Funktion für regex

machen
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 }; 

Verwendung dieser Code unten in addTextChang edListener

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); 
      } 
     } 
    }); 

Dank ..

1

Es gibt keine native Funktionalität dafür. Sie müssen TextWatcher Klasse auf EditText setzen. Was es tut, ist ein Listener auf Ihrem Feld zu setzen und während Sie es eingeben gibt Ihnen eine Methode, um die Eingabe zu überprüfen.

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. 

      } 


    }); 
+0

Siehe meine editierte Post – Brendon

+0

, die auf Ihrem hängt Implementation können Sie auch 'FlipAnimator' verwenden, um Ansichten zu spiegeln. Aber wenn Sie nur nach Code suchen, der schlecht ist. Versuchen Sie, die oben beschriebenen Techniken zu verwenden. –

+0

Hinweis: Sie können auch 'SlideUp' definieren und' SlideDown' Animation 'FlipAnimator' –

1

Sie würden den Text beobachten, wie es eingegeben wird, um die ersten Ziffern von dem oberen Codes hier zum Spiel:

kann

http://www.stevemorse.org/ssn/List_of_Bank_Identification_Numbers.html

Das mit dem TextWatcher Zuhörer Murtaza Hussain hat getan werden wies darauf hin.

Kontrolle der Text über:

switch (s.charAt(0)){ 
case '4': 
    // show visa symbol 
    break; 
case '5': 
    // show mastercard symbol 
    break; 
... 
+0

Danke für den Link, der mir hilft, eine Regex zu erstellen. – Brendon