Android ListView适配器中EditText的验证

Android ListView适配器中EditText的验证,android,listview,android-edittext,android-adapter,Android,Listview,Android Edittext,Android Adapter,我有一个ListView适配器,如下所示: @Override public View getView(int i, View view, ViewGroup viewGroup){ if(layoutInflater == null){ layoutInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } if(view == nul

我有一个ListView适配器,如下所示:

@Override
public View getView(int i, View view, ViewGroup viewGroup){
    if(layoutInflater == null){
        layoutInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    if(view == null){
        view = layoutInflater.inflate(R.layout.list_pickingscan, null);
    }

    final TextView tvMaterialCode = (TextView) view.findViewById(R.id.list_picking_scan_materialcode_tv);
    EditText etSerialNumber = (EditText) view.findViewById(R.id.list_picking_scan_serialnumber_tv);

    final PickingDetails pickingDetails = pickingDetailsList.get(i);
    tvMaterialCode.setText(pickingDetails.getMaterialCode().toString());
    etSerialNumber.setText(pickingDetails.getSerialNumber().toString());
    etSerialNumber.setMaxLines(1);
    return view;
}
}
视图应如下所示:

Material Code    Serial Number
Material A       ______________
Material B       ______________

每次用户在提交按钮之前输入值时,我都要对EditText序列号进行验证。如何进行验证?

您可以使用TextWatcher添加验证

 private class GenericTextWatcher implements TextWatcher {

    private View view;

    private GenericTextWatcher(View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void afterTextChanged(Editable editable) {
        switch (view.getId()){
            case **First View Id:**
            //validation for first edit text
            break;
            case **second view id :**
            //validation for second edit text
             break
        }

    }
}

m_InputMobile.addTextChangedListener(new GenericTextWatcher(m_InputMobile));
secondView.addTextChangedListener(new GenericTextWatcher(secondView));

您可以使用TextWatcher添加验证

 private class GenericTextWatcher implements TextWatcher {

    private View view;

    private GenericTextWatcher(View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void afterTextChanged(Editable editable) {
        switch (view.getId()){
            case **First View Id:**
            //validation for first edit text
            break;
            case **second view id :**
            //validation for second edit text
             break
        }

    }
}

m_InputMobile.addTextChangedListener(new GenericTextWatcher(m_InputMobile));
secondView.addTextChangedListener(new GenericTextWatcher(secondView));

我如何知道根据您的回答选择了哪个editText或职位的editText?好的,让我更新多个editText的答案,但我的问题是相同的,您如何知道在哪个职位上选择了哪个editText?假设您从1个位置选择editText,然后选择2个位置,您如何知道根据位置YUP选择了哪个editText。如何知道EditText位置?在为每个编辑文本创建对象时,将视图引用传递给GenericTextWatcher。因此,您可以获取执行GenericTextWatcher对象的视图的id,如以下开关(view.getId()){case*第一个视图id://第一个编辑文本中断的验证;case第二个视图id://第二个编辑文本中断的验证}*我如何知道根据您的回答选择了哪个editText或职位的editText?好的,让我更新多个editText的答案,但我的问题是相同的,您如何知道在哪个职位上选择了哪个editText?假设您从1个位置选择editText,然后选择2个位置,您如何知道根据位置YUP选择了哪个editText。如何知道EditText位置?在为每个编辑文本创建对象时,将视图引用传递给GenericTextWatcher。因此,您可以获取执行GenericTextWatcher对象的视图的id,如以下开关(view.getId()){case*第一个视图id://第一个编辑文本中断的验证;case第二个视图id://第二个编辑文本中断的验证}*