ラベル java の投稿を表示しています。 すべての投稿を表示
ラベル java の投稿を表示しています。 すべての投稿を表示

2015年12月5日土曜日

リスナー系の実装方法

~Listenerというクラスの実装方法は色々あると思いますが、主に利用しているパターンは2つのパターンです。

①無名クラスで実装する方法
②メインとなるクラスにimplementsで実装してしまう方法
他にもちゃんと名前を付けたクラスを定義して実装する方法もありますが使ったことはありません。

実際のコード(例ではシークバーを扱っています)は次のようになります。
①の例
public class ~Activity extends Activity {
    :
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        :
        seekBar~.setOnSeekBarChangeListener(
            new SeekBar.OnSeekBarChangeListener() {
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    //
                }
                public void onStartTrackingTouch(SeekBar seekBar) {
                    //
                }
                public void onStopTrackingTouch(SeekBar seekBar) {
                    //
                }
            }
        );
        :
    }
    :
}
②の例
public class ~Activity extends Activity
    implements SeekBar.OnSeekBarChangeListener {
    :
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        :
        seekBar~.setOnSeekBarChangeListener(this);
        :
    }
    :
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        //
    }
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        //
    }
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        //
        switch (seekBar.getId()){
            case R.id.seekBar~:
                break;
        }
    }
    :
}

好みもありますが、個人的には①のほうがスッキリしていてコードも見やすいので好きなのですが、複数シークバーが有るときにはどうしても助長に見えます。また無名クラスとはいえ内部でクラスが生成されているのも気になります。(Javaが実際にどのように動作しているのかは理解していませんが)
②の場合は一つの時には何も考えなくてもよいのですが、複数ある場合は引数のseekBarを見てどのseekBarなのか判断する必要があります。コードには条件分岐が必要になるので複雑になってしまいます。ただしクラスの生成が発生していない分、余計な生成時間やメモリーがなさそうです。

まだどちらが良い悪いという結論が出せていません。

2015年10月11日日曜日

sleep(0)

特定の処理で明らかにsleep(0)を実行するのは解っていたのですが、特に害はないと思ってそのままにしていました。

2015年3月23日月曜日

初心者がハマったインテントフィルター

夜な夜なアプリを書き換えててハマりました。

うまくゆかないちょっと気になることをメモ書き

アプリを作って使っていて気になって原因はわからないものの解消できたものと、原因が不明なものとが2つあるのでメモ書き。

Singletonパターン

実際に書籍などでデザインパターンに関するものを読んだことは無いのですが、javaを触っていく以上少なからず目を通しておいたほうが良いかもなと感じてはいます。

手持ちのアプリで動作が少々怪しい部分があるのでどうすればその部分を排除できるかという観点に基づいて考えた結果、まずはここからかな?というところでインスタンスが万が一複数できてしまっていたらよくは無いと考え、検索してみてみました。

2015年3月21日土曜日

ExampleAppWidgetProvider.javaのコードバグ

多分すごくどうでもいいことですが気づいたので書いておきます(笑)

後で書くかもしれませんけど、元々はWidgetの挙動がどうしても気に入らないので動作をちょっと細かく見ていたところで気がつきました。

見ることのできるWidgetのコードをコンパイルして動かしたりしていて、やっぱりSDKのコードも見て見ないとダメかなとおもってみたところちょっとした違和感のあるコードが。

2015年1月27日火曜日

動的な配列

ArrayList

ArrayList arrayList = new ArrayList();
arrayList.add("text");

arrayList.add(new Byte(1));