Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ButterKnifeで@InjectViewした要素を@OnClickする方法 #3

Open
labeneko opened this issue Jan 13, 2015 · 1 comment
Open

ButterKnifeで@InjectViewした要素を@OnClickする方法 #3

labeneko opened this issue Jan 13, 2015 · 1 comment

Comments

@labeneko
Copy link
Owner

  • OnClickはidを指定しないといけない
  • ここでidを書いてしまっては、最初で@InjectViewする意味がない気がする
@chuross
Copy link

chuross commented Jan 13, 2015

ここでidを書いてしまっては、最初で@InjectViewする意味がない気がする

この方法はどうでしょう?
この方法であればidが必要なのはinject時だけです

@InjectView(R.id.view1)
View view1;
@InjectView(R.id.view2)
View view2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ....
    ButterKnife.inject(this);
    view1.setOnClickListener(new View.OnClickListener() {
        // view1のクリック処理
    });
    view2.setOnClickListener(new View.OnClickListener() {
        // view2のクリック処理
    });
    ....
}

個人的にはButterKnifeの@OnClick等のViewイベント系のアノテーションは使いません。

理由は二点あります

  • 全てのViewイベントをアノテーションで表現しないと一貫性を維持できない
  • 独自拡張のViewでオリジナルのイベントを増設した時に別途アノテーション用の処理を書かないといけない
    • 実装コスト高まる
    • これは外部ライブラリ使う場合も同じようにアノテーション用の実装が必要になってしまう

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants