0

我有一个线性布局,其中包含我想要访问的 TextView。在这个线性布局中有一个列表视图,其中每个项目都是一个线性布局并且还包含自定义视图。

深处有一个带有 的按钮onclickListener。执行后onClick(),我想调用一个方法来设置我的 textview 的文本。目前我正在这样做:

(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) 

或者只是创建一个成员TextView mTv,在您的#OnCreate 中对其进行初始化,并按照对您问题的评论中的建议在任何地方使用它

于 2014-04-07T13:32:33.707 回答