package com.jdroid.android.listener;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import com.jdroid.android.utils.AppUtils;
import com.jdroid.java.concurrent.ExecutorUtils;
public abstract class OnEnterKeyListener implements OnKeyListener {
private Boolean async;
public OnEnterKeyListener() {
this(true);
}
/**
* @param async
*/
public OnEnterKeyListener(Boolean async) {
this.async = async;
}
/**
* @see android.view.View.OnKeyListener#onKey(android.view.View, int, android.view.KeyEvent)
*/
@Override
public boolean onKey(final View v, int keyCode, KeyEvent event) {
if (matchKeyCode(keyCode) && (event.getAction() == KeyEvent.ACTION_UP)) {
Runnable runnable = new Runnable() {
@Override
public void run() {
AppUtils.hideSoftInput(v);
onRun(v);
}
};
if (async) {
ExecutorUtils.execute(runnable);
} else {
runnable.run();
}
return true;
}
return false;
}
protected Boolean matchKeyCode(int keyCode) {
return keyCode == KeyEvent.KEYCODE_ENTER;
}
/**
* Called when the search key on the keyword is released.
*
* @param view The view the key has been dispatched to.
*/
public abstract void onRun(View view);
}