なんでもまとめてにおきたい年末です。


普段Androidでアプリ作ってるときに
複数のボタンとかシークバーとかに色々イベントをつけるのですが
個人的に無名クラスとかいわれるものやimplementsしたりして書くのが好きではありません。


正直ボタンならボタン、バーならバーでイベントをまとめておきたいのです。

なので個人的なメモとしてなんとなく使いそうなイベントリスナーをまとめてみた。

ちなみにこの書き方、なんて呼ぶのか分かってません。有名クラスって呼ぶのかな?
あとxml部分ははしょります。。


■Button---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//Buttonセット*********************************************************
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.button2);
btn.setOnClickListener(btnListener);//



//Buttonの処理はこちらで************************************************
private OnClickListener btnListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
//ButtonのIDで振り分け
case R.id.button1:
Toast.makeText(MainActivity.this, "R.id.button1です", Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
Toast.makeText(MainActivity.this, "R.id.button2です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};


■ToggleButton---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//ToggleButtonセット*****************************************************
ToggleButton toogglebtn = (ToggleButton)findViewById(R.id.toggleButton1);
toogglebtn.setOnCheckedChangeListener(toggleListener);
toogglebtn = (ToggleButton)findViewById(R.id.toggleButton2);
toogglebtn.setOnCheckedChangeListener(toggleListener);


//ToggleButtonの処理はこちらで*********************************************
private OnCheckedChangeListener toggleListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton v, boolean isChecked) {
switch(v.getId()){
//ToggleButtonのIDで振り分け
case R.id.toggleButton1:
if(v.isChecked()){
Toast.makeText(MainActivity.this, "R.id.toggleButton1 trueです", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "R.id.toggleButton1 falseです", Toast.LENGTH_SHORT).show();
}
break;
case R.id.toggleButton2:
if(v.isChecked()){
Toast.makeText(MainActivity.this, "R.id.toggleButton2 trueです", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "R.id.toggleButton2 falseです", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
};

■CheckBox---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//CheckBoxセット********************************************************************
CheckBox checkBox = (CheckBox)findViewById(R.id.checkBox1);
checkBox.setOnClickListener(checkListener);
checkBox = (CheckBox)findViewById(R.id.checkBox2);
checkBox.setOnClickListener(checkListener);



//CheckBoxの処理はこちらで***********************************************************
private OnClickListener checkListener = new OnClickListener() {
@Override
public void onClick(View v) {
// チェックボックスのチェック状態を取得します
CheckBox checkBox = (CheckBox) v;
//チェックボックスのIDで振り分け
switch(v.getId()){
case R.id.checkBox1:
// チェックボックスのチェック状態を判断
if(checkBox.isChecked()){
Toast.makeText(MainActivity.this, "R.id.checkBox1 trueです", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "R.id.checkBox1 falseです", Toast.LENGTH_SHORT).show();
}
break;
case R.id.checkBox2:
// チェックボックスのチェック状態を判断
if(checkBox.isChecked()){
Toast.makeText(MainActivity.this, "R.id.checkBox2 trueです", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "R.id.checkBox2 falseです", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
};

■RadioButton---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//RadioButtonセット********************************************************************
RadioButton radioButton = (RadioButton)findViewById(R.id.radioButton1);
radioButton.setOnCheckedChangeListener(radioListener);
radioButton = (RadioButton)findViewById(R.id.radioButton2);
radioButton.setOnCheckedChangeListener(radioListener);



//RadioButtonの処理はこちらで**********************************************************
private OnCheckedChangeListener radioListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton v, boolean isChecked) {
RadioButton radiobutton = (RadioButton) v;
switch(v.getId()){
//RadioButtonのIDで振り分け
case R.id.radioButton1:
// RadioButtonのチェック状態を取得します
if(radiobutton.isChecked()){
Toast.makeText(MainActivity.this, "R.id.radioButton1 trueです", Toast.LENGTH_SHORT).show();
}

break;
case R.id.radioButton2:
// RadioButtonのチェック状態を取得します
if(radiobutton.isChecked()){
Toast.makeText(MainActivity.this, "R.id.radioButton2 trueです", Toast.LENGTH_SHORT).show();
}

break;
default:
break;
}
}
};

■RadioGroup---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//RadioGroupセット********************************************************************
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
radioGroup.setOnCheckedChangeListener(radioGroupListener);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup2);
radioGroup.setOnCheckedChangeListener(radioGroupListener);


//RadioGroupの処理はこちらで***********************************************************
private RadioGroup.OnCheckedChangeListener radioGroupListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(group.getId()){
//RadioGroupのIDで振り分け
case R.id.radioGroup1:
switch(checkedId){
case R.id.radio1:
Toast.makeText(MainActivity.this, "R.id.radioGroup1 radio1 trueです", Toast.LENGTH_SHORT).show();
break;
case R.id.radio2:
Toast.makeText(MainActivity.this, "R.id.radioGroup1 radio2 trueです", Toast.LENGTH_SHORT).show();
break;
case R.id.radio3:
Toast.makeText(MainActivity.this, "R.id.radioGroup1 radio3 trueです", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
break;
case R.id.radioGroup2:
switch(checkedId){
case R.id.radio1:
Toast.makeText(MainActivity.this, "R.id.radioGroup2 radio1 trueです", Toast.LENGTH_SHORT).show();
break;
case R.id.radio2:
Toast.makeText(MainActivity.this, "R.id.radioGroup2 radio2 trueです", Toast.LENGTH_SHORT).show();
break;
case R.id.radio3:
Toast.makeText(MainActivity.this, "R.id.radioGroup2 radio3 trueです", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
break;
default:
break;
}

}
};



■Spinner---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//Spinnerセット********************************************************************
//サンプルでリストを作成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// アイテムを追加します
adapter.add("sample1");
adapter.add("sample2");
adapter.add("sample3");

Spinner spinner = (Spinner)findViewById(R.id.spinner1);
spinner.setAdapter(adapter);
//起動時のイベント動作回避用
spinner.setFocusable(false);
spinner.setOnItemSelectedListener(spinnerListener);

spinner = (Spinner)findViewById(R.id.spinner2);
spinner.setAdapter(adapter);
//起動時のイベント動作回避用
spinner.setFocusable(false);
spinner.setOnItemSelectedListener(spinnerListener);


//Spinnerの処理はこちらで*********************************************************
private AdapterView.OnItemSelectedListener spinnerListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
Spinner spinner = (Spinner) parent;
//初回起動時に動いちゃうから回避用
if(!spinner.isFocusable()){
spinner.setFocusable(true);
return;
}
int item = spinner.getSelectedItemPosition();
switch (spinner.getId()) {
case R.id.spinner1:
switch (item) {
case 0:
Toast.makeText(MainActivity.this, "R.id.spinner1 sample1選択です", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(MainActivity.this, "R.id.spinner1 sample2選択です", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this, "R.id.spinner1 sample3選択です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
break;
case R.id.spinner2:
switch (item) {
case 0:
Toast.makeText(MainActivity.this, "R.id.spinner2 sample1選択です", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(MainActivity.this, "R.id.spinner2 sample2選択です", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this, "R.id.spinner2 sample3選択です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
break;
default:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
};

■SeekBar---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//SeekBarセット****************************************************************
SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar1);
seekBar.setOnSeekBarChangeListener(SeekListener);
seekBar = (SeekBar)findViewById(R.id.seekBar2);
seekBar.setOnSeekBarChangeListener(SeekListener);


//SeekBerの処理はこちらで*******************************************************
private OnSeekBarChangeListener SeekListener = new OnSeekBarChangeListener() {

// トラッキング開始時に呼び出されます
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
switch (seekBar.getId()) {
case R.id.seekBar1:
Toast.makeText(MainActivity.this, "R.id.seekBar1 トラッキング開始です", Toast.LENGTH_SHORT).show();
break;
case R.id.seekBar2:
Toast.makeText(MainActivity.this, "R.id.seekBar2 トラッキング開始です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
// トラッキング中に呼び出されます
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean byUser) {
switch (seekBar.getId()) {
case R.id.seekBar1:
Toast.makeText(MainActivity.this, "R.id.seekBar1 "+Integer.toString(progress)+"です", Toast.LENGTH_SHORT).show();
break;
case R.id.seekBar2:
Toast.makeText(MainActivity.this, "R.id.seekBar2 "+Integer.toString(progress)+"です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
// トラッキング終了時に呼び出されます
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
switch (seekBar.getId()) {
case R.id.seekBar1:
Toast.makeText(MainActivity.this, "R.id.seekBar1 トラッキング終了です", Toast.LENGTH_SHORT).show();
break;
case R.id.seekBar2:
Toast.makeText(MainActivity.this, "R.id.seekBar2 トラッキング終了です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};


■EditText---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//EditTextセット***************************************************************
EditText editText = (EditText)findViewById(R.id.editText1);
editText.setOnEditorActionListener(EditTextListener);
editText = (EditText)findViewById(R.id.editText2);
editText.setOnEditorActionListener(EditTextListener);



//EditViewの処理はこちらで********************************************************
private OnEditorActionListener EditTextListener = new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
switch (v.getId()) {
case R.id.editText1:
if(event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
// ここにエンターキーを押したときの動作を記述します。
Toast.makeText(MainActivity.this, "R.id.editText1 Enter押しました", Toast.LENGTH_SHORT).show();

}
break;
case R.id.editText2:
if(event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
// ここにエンターキーを押したときの動作を記述します。
Toast.makeText(MainActivity.this, "R.id.editText2 Enter押しました", Toast.LENGTH_SHORT).show();

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


■EditText TextWatcher版---------------------------------------------------------


//これはonCreate~onResumeの中にいれといて
//EditText TextWatcher版セット*************************************************
editText = (EditText)findViewById(R.id.editWatcher1);
editText.addTextChangedListener(new TextWatcherListener(R.id.editWatcher1));
editText = (EditText)findViewById(R.id.editWatcher2);
editText.addTextChangedListener(new TextWatcherListener(R.id.editWatcher2));


//EditView TextWatcher版の処理はこちらで*****************************************
private class TextWatcherListener implements TextWatcher {
final int mEditTextId;
public TextWatcherListener(final int editTextId) {
this.mEditTextId = editTextId;
}

// テキスト変更後
public void afterTextChanged(Editable s) {
switch (this.mEditTextId) {
case R.id.editWatcher1:
break;
case R.id.editWatcher2:
break;
default:
break;
}
}

// テキスト変更前
public void beforeTextChanged(CharSequence s, int start,int count, int after) {
switch (this.mEditTextId) {
case R.id.editWatcher1:
break;
case R.id.editWatcher2:
break;
default:
break;
}
}

// テキスト変更後
public void onTextChanged(CharSequence s, int start,int before, int count) {
switch (this.mEditTextId) {
case R.id.editWatcher1:
Toast.makeText(MainActivity.this, "R.id.editWatcher1 " + s + "です", Toast.LENGTH_SHORT).show();
break;
case R.id.editWatcher2:
Toast.makeText(MainActivity.this, "R.id.editWatcher2 " + s + "です", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}

}

---------------------------------------------------------------------------


以上です。
間違ってたりもっといい方法あるよって場合は知りたいです。


最後にプロジェクトもおいときます。
>ここ