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