■実装
MainActivity.java
package info.justoneplanet.android.sample.listener;
import info.justoneplanet.android.lib.edittext.listener.OnEditTextListenerInterface;
import info.justoneplanet.android.lib.edittext.listener.EditTextNotify;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity implements OnEditTextListenerInterface {
private EditText mEditText;
private EditTextNotify mEditTextNotify;
private TextView mStatusText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText = (EditText) findViewById(R.id.editText);// EdtText
mStatusText = (TextView) findViewById(R.id.statusText);// 現在のEditTextの内容を表示する
mEditTextNotify = new EditTextNotify(mEditText);
mEditTextNotify.setListener(this);
}
@Override
public void onTextInput(String content) {
Log.e("EditText", "テキスト入力中...");
mStatusText.setText(content);
}
}
OnEditTextListenerInterface.java
package info.justoneplanet.android.lib.edittext.listener;
import java.util.EventListener;
public interface OnEditTextListenerInterface extends EventListener
{
/**
* onTextInput
* テキストが入力された時に実行される
* @param content EditTextに入力されているテキスト
*/
public void onTextInput(String content);
}
EditTextNotify.java
package info.justoneplanet.android.lib.edittext.listener;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
/**
* EditTextNotify
* EditTextのリスナを管理し適切なイベントの時にリスナのイベントを実行
*/
public class EditTextNotify
{
private OnEditTextListenerInterface mListener;
private EditText mEditText;
/**
* EditTextNotify
* @param editText 監視するEditText
*/
public EditTextNotify(EditText editText)
{
mEditText = editText;
// テキスト入力欄でキーが押された時
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (mListener != null) {
mListener.onTextInput(mEditText.getText().toString());
}
return false;
}
});
}
/**
* setListener
* @param listener OnEditTextListenerInterfaceが実装されたActivity等
*/
public void setListener(OnEditTextListenerInterface listener)
{
mListener = listener;
}
/**
* removeListener
* リスナを削除する
*/
public void removeListener()
{
mListener = null;
}
}