0

このコードをより効率的に記述する方法を理解できないようです。有効性 (入力されたテキスト) を確認するためにビューを繰り返し処理していますが、キャストが多すぎることに気付きました。Eclipseによると、ビューのメソッドにアクセスするにはキャストする必要があります。コードは次のとおりです。

// Verify Drivers/Vehicles Entered
private boolean checkDriversVehiclesValidity() {
    int viewCount = mContainerView.getChildCount();
    for (int i = 0; i < viewCount; i++) {
        View v = mContainerView.getChildAt(i);
        if (v.getId() == R.id.driverVehicleRow) {
            for (int j = 0; j < ((LinearLayout) v).getChildCount(); j++) {
                View v1 = ((ViewGroup) v).getChildAt(j);
                if (v1 instanceof CustomAutoCompleteTextView) {
                    if (((CustomAutoCompleteTextView) v1).getError() != null) {
                        v1.requestFocus();
                        return false;
                    }
                    if (v1.getId() == R.id.drivers_field) {
                        String driverNumber = ((CustomAutoCompleteTextView) v1).getText().toString();
                        if ("".equals(driverNumber)) {
                            ((CustomAutoCompleteTextView) v1).setError("Driver required");
                            v1.requestFocus();
                            return false;
                        }
                    } else if (v1.getId() == R.id.vehicles_field) {
                        String vehicleNumber = ((CustomAutoCompleteTextView) v1).getText().toString();
                        if ("".equals(vehicleNumber)) {
                            ((CustomAutoCompleteTextView) v1).setError("Vehicle required");
                            v1.requestFocus();
                            return false;
                        }
                    }
                }
            }
        }
    }
    return true;
}
4

1 に答える 1

1

たとえば、次のことを確認した後、

if (v1 instanceof CustomAutoCompleteTextView)

のインスタンスであることを確認できるCustomAutoCompleteTextViewため、次のように適切に型指定された変数に割り当てることができます。

CustomAutoCompleteTextView cv = (CustomAutoCompleteTextView)v1;

cv後で代わりに使用します((CustomAutoCompleteTextView) v1)

于 2013-06-29T05:24:24.837 に答える