0

私のアクティビティには複数のリストがあるため、MyClickListenerを次のように定義しました。

私の質問は、このクラスをどのようにインスタンス化する必要があるかです。

 MyClickListener mMyClickListener = new MyClickListener();

または、onCreate(Bundle)内でインスタンス化して、上記で定義する方がよい場合もあります。何がより良い方法と考えられていますか?onCreate()には、すでにたくさんのものが入っているので、あまり多くは必要ありません。宣言と制定について何か考えはありますか?最善の方法は何ですか?

private class MyClickListener implements OnClickListener
{

    @Override
    public void onClick(View view) {

    }

}
4

2 に答える 2

1

そもそもなぜそのようなリスナーをインスタンス化するのですか?listViewに割り当てるときに、新しいものを作成するだけです。

listView.setOnClickListener( new MyListener());
于 2012-09-22T03:34:54.997 に答える
1

質問でおっしゃったのと同じ種類のクラスメカニズムを使用します。

これが私の使い方です、

public class myActivity extends Activity
{
    private MyListener listener = null;

    private Button cmdButton = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

                cmdButton = (Button) findViewById(R.id.cmdButton);
                cmdButton.setOnClickListener(getListener());

    }


    // method to fetch the listener object
    private MyListener getListener() 
    {
        if (listener == null) 
        {
            listener = new MyListener();
        }
        return listener;
    }

       private class MyListener implements Button.OnClickListener 
       {
             public void onClick(View v) 
             {
             }
       }
}
于 2012-09-22T02:05:46.890 に答える