我有一个linearlayout,它包含我想要访问的TextView。 在此线性布局中,有一个列表视图,其中每个项目都是线性布局,并且还包含自定义视图。
深入有一个onclickListener
的按钮。执行onClick()
后,我想调用一个设置textview文本的方法。
目前我这样做:
(View)this.getParent().getParent().getParent().getParent().getParent().getParent().getParent().findViewById(R......)
它有效,但看起来很糟糕。有没有可能做得更好?
答案 0 :(得分:1)
它看起来很糟糕,因为对于一个人来说,了解一些关于自我的东西通常是一个坏主意。因此,了解您的孩子可能还可以,但不能回来。
您最好不要让视图像视图一样简单,没有任何其他逻辑。在活动/片段
中做你的逻辑答案 1 :(得分:1)
是的,它的丑陋,不要那样做。
通过询问包含布局的活动,在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中对其进行初始化,并按照您对问题的评论中的建议将其用于任何地方