Как сделать проверку в EditText в ListView? - PullRequest
2 голосов
/ 18 февраля 2012

У меня проблема с проверкой Edittext в просмотре списка в onFocusChangeListner.

Мой интерфейс выглядит так

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

Когда я набираю текущее чтение, оно будет сравниваться с предыдущим чтением. Текущее чтение не может быть меньше предыдущего. Если он меньше, чем предыдущий, я хочу предупредить пользователя, и фокус на том же EditBox.

Мой код здесь:

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

           }

      } });

С этим кодом, когда я начинаю печатать в EditBox, отображается предупреждение для всех символов, то, что я набираю, если предыдущий - 600, и я печатаю текущее чтение, как 6, - показывает 5 снова alerttdialog, пока он не станет больше предыдущего значения.

Когда я нажимаю на EditText, hasFocus имеет значение true, а когда я набираю любое число, скажем, что 5 фокус меняется на false.

Может кто-нибудь сказать мне, как сделать проверку для этого, предоставив образец кода?

Ответы [ 2 ]

4 голосов
/ 18 февраля 2012

лучше использовать на textwatcher для вашего текста редактирования.

 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

            }
        });
2 голосов
/ 18 февраля 2012

Посмотрите на это .Затем, расширяя эту концепцию до вашей проблемы, я бы предложил:

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." );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...