2012-02-18 3 views
2

J'ai un problème lors de la validation d'Edittext dans listview dans onFocusChangeListner.Comment faire pour valider dans EditText dans un ListView?

Mon interface utilisateur ressemble à ceci

MeterName Previous CurrentReading 
Meter1 100  Here i want to type current reading 

Lorsque je tape la lecture actuelle, il comparera avec la lecture précédente. La lecture en cours ne peut pas être inférieure à Précédent. Si c'est moins que le précédent, je veux alerter l'utilisateur et le focus est sur le même EditBox.

Mon code est ici:

public void onFocusChange(View v, boolean hasFocus) { 

      try { 
      Previous_Reading = getArray_Meter_Reading.getJSONObject(holder.ref) 
         .getString("PrevMeterReading").toString(); 
      Cumulative = getArray_Meter_Reading 
        .getJSONObject(holder.ref).getString("Cumulative") 
        .toString(); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 



      if(!hasFocus){ 

       int Current=Integer.valueOf(holder.adp_Current.getText().toString()); 
       Previous=Integer.parseInt(Previous_Reading); 
       if(Current< Previous){ 
        AlertDialog.Builder builder = new AlertDialog.Builder(
          context); 
        builder.setTitle("WARNING"); 
        builder.setIcon(android.R.drawable.ic_dialog_alert); 
        builder.setMessage("Please Enter UserName"); 
        builder.setPositiveButton("ok", 
          new DialogInterface.OnClickListener() { 

           public void onClick(DialogInterface dialog, 
             int which) { 

            // Caption.requestFocus(); 

           } 
          }); 

        AlertDialog diag = builder.create(); 
        diag.show(); 
       } 

      } 

     } }); 

Avec ce code, quand je commence à taper alerte EditBox est affiché pour tous les personnages, ce que je tape comme si précédent est 600 et je tape la lecture en cours comme 6 il me montre alertdialog puis 5 encore alertdialog jusqu'à ce qu'il soit supérieur à la valeur précédente.

Lorsque je clique sur EditText hasFocus est vrai et quand je tape n'importe quel nombre, disons 5 focus change à false. Est-ce que quelqu'un peut me dire comment faire la validation pour cela en donnant un exemple de code?

Répondre

2

Jetez un oeil à this. Puis, en étendant ce concept à votre problème, je suggère:

EditText myEditText = (EditText)findViewById(R.id.first_name); 
int textValue = 0 ; 
try { 
    textValue = Integer.parseInt(myEditText.getText().toString()) ; 
catch (NumberFormatException nfe) { 
    // Handle the exception 
} 
if (textValue < minValue) { 
    myEditText.requestFocus(); 
    myEditText.setError("Value entered is lower than previous value."); 
} 
+0

comment peut obtenir un texte de trou de editbox à la fois, puis valider wit valeur précédente parce que, quand je tape tout seul numéro onfocuschangeListner obtenir appel et un message d'erreur vous invite à entrer tous les numéros jusqu'à ce qu'il soit plus que le précédent. –

4

son meilleur à utiliser sur textwatcher pour votre edittext.

edittext.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) 
       { 
       if(Integer.valueOf(holder.adp_Current.getText().toString()<Integer.parseInt(Previous_Reading)){ 
       edittext.seterror("your error message"); 

      } 

      @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub 

      } 
     }); 
+0

mais dans TextWatcher il me donne java.lang.NumberFormatException: impossible d'analyser '' comme entier et encore une fois je veux dire à tous les types tous les chiffres il me donne un message d'erreur. –

Questions connexes