@blog.justoneplanet.info

日々勉強

androidでListenerを作る

■実装

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;    
    }
}

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment