我在Android Studio的项目中使用Android Annotations 3.1
,我正在使用可扩展列表视图。
我在这个列表中添加了一个标题:
View header = getLayoutInflater().inflate(R.layout.list_view_header, null);
txt_user = (TextView) header.findViewById(R.id.txt_user);
txt_user.setText(" ... ");
mExpandableListView.addHeaderView(header);
问题:
如何使用@ViewById
将我的TextView
设置为:
- 避免使用findViewById
- 更改文字
- 然后在以下期间将其添加为标题:
@AfterViews
protected void init() {
....
}
如果我在使用init:
中的文本视图时在Activity中执行此操作@ViewById
TextView txt_user;
它给出了空指针异常。
答案 0 :(得分:2)
为什么不创建这样的自定义视图:
@EViewGroup(R.layout.list_view_header)
public class MyHeader extends LinearLayout {
@ViewById(R.id.txt_user)
protected TextView mTextView;
public void setText(String text) {
mTextView.setText(text);
}
public MyHeader(Context context) {
super(context);
}
}
然后,在Activity
中,写下:
@EActivity(R.layout.activity_xxx)
public class MyActivity extends Activity {
private MyHeader mHeader;
@AfterViews
protected void init() {
mHeader = MyHeader_.build(this);
mHeader.setText("...");
mExpandableListView.addHeaderView(mHeader);
}
}
答案 1 :(得分:0)
要在布局中使用用@ViewGroup签名的视图,您需要实现在其类中使用AttributSet的构造函数。
注意:请记住使用最后带有_(下划线)的生成类。 她必须在布局xml中声明。