0

アクセスしたいTextViewを含むlinearlayoutがあります。この linearlayout には listview があり、すべての項目が linearlayout であり、カスタム ビューも含まれています。

奥に の付いたボタンがありますonclickListener。を実行した後onClick()、テキストビューのテキストを設定するメソッドを呼び出したいです。現時点では、次のようにしています。

(View)this.getParent().getParent().getParent().getParent().getParent().getParent().getParent().findViewById(R......)

動作しますが、見栄えが悪いです。より良い方法で行う可能性はありますか?

画像

4

2 に答える 2

1

ビューがそれ自体の外について何かを知ることは一般的に悪い考えであるため、見た目が悪いです。したがって、おそらくあなたの子供について知ることは問題ありませんが、戻ってはいけません.

他のロジックを使用せずに、ビューをビューと同じくらいシンプルに保つことをお勧めします。アクティビティ/フラグメントでロジックを実行します

循環依存を参照してください

于 2014-04-07T13:25:35.027 に答える
1

はい、それは醜いです、そうしないでください。

レイアウトを保持しているActivityに尋ねることで、あなたonClick(View v)は手に入れることができます:TextView

@Override
public void onClick(View v) {
    TextView tv = (TextView) YourActivity.this
        .findViewById(R.id.your_text_view_id);
    tv.setText("blabla");
}

アクティビティ使用の代わりにフラグメントから行う場合:

YourFragment.this.getView().findViewById(R.id.your_text_view_id) 

または、単に member を作成TextView mTvし、 #OnCreate で初期化し、質問へのコメントで提案されているようにどこでも使用します

于 2014-04-07T13:32:33.707 に答える