1
    userInputs.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                switch (keyCode) {
                case KeyEvent.KEYCODE_ENTER:
                    int val = (Integer) userInputs.getTag();
                    switch (val) {
                    case USER_INP_NAME:
                        newUser = new Users();
                        newUser.setUsersName(userInputs.getText()
                                .toString());
                        userInputs.setTag(USER_INP_NUMBER);
                        userInputs.setText("");
                        userInputs.setHint("User Name");
                        break;
                    case USER_INP_NUMBER:
                        newUser.setUnitWeight(Integer
                                .parseInt(userInputs.getText().toString()));
                        userInputs.setTag(USER_INP_STATE);
                        userInputs.setText("");
                        userInputs.setHint("User Number");
                        break;
                    case USER_INP_STATE:
                        newUser.setShelfLife(Integer
                                .parseInt(userInputs.getText().toString()));
                        userInputs.setTag(USER_INP_NAME);
                        userInputs.setText("");
                        userInputs.setHint("User State");
                        uList.add(newUser);
                        adapter.notifyDataSetChanged();
                        break;
                    default:
                        break;
                    }

                default:
                    break;
                }
            }
            return false;
        }
    });

シナリオ - Android アプリで、EditText ボックスがあり、複数の種類の入力を順番に受け入れる必要があります。この順序は事前定義されています。オンUSER_INP_NAMEオブジェクトnewUserが作成されます。この後、複数のプロパティがこのオブジェクトで設定されます。最後にUSER_INP_STATE、オブジェクトがリストに追加されます。このサイクルが繰り返されます。

私は「C」プログラマーなので、プロシージャー指向でコーディングしています。スイッチケースは今のところ醜いように見えますが、これを行うためのより良い解決策はありますか?

4

1 に答える 1

0

正規表現を使用できます。例えば:

public String currentInput(String input){
    if(input.matches("[0-9]*")){
        return "numbers only";
    }
    if(input.matches("Some RegEx")){
        return "something else..";
    }
    if(...
}
于 2013-08-28T09:59:19.007 に答える