我有一个处理从RecyclerView选择字符的类,并且一切正常,但是我想用正确的信息更新NavigationView标头中元素的文本.到目前为止,我一直在尝试使用ButterKnife解决此问题,但没有成功.但是,我已经能够以这种方式工作:
private ImageView mImageView;
private TextViewTitle mTextViewName;
private TextViewRegular mTextViewTitle;
private static View mHeaderView;
public void setHeaderView(View headerView) {
mHeaderView = headerView;
selectedCharacterInstance.setHeaderViewElements();
}
private void setHeaderViewElements() {
mImageView = mHeaderView.findViewById(R.id.selected_character_info1);
mTextViewName = mHeaderView.findViewById(R.id.selected_character_info2);
mTextViewTitle = mHeaderView.findViewById(R.id.selected_character_info3);
}
我从MainActivity传递headerView.我不喜欢这种方法,但是由于我对Android编程还很陌生,所以我可能会错了.这是正确的方法吗?有没有办法使用ButterKnife解决此问题? (我尝试过ButterKnife,但是ImageView和TextViews始终为null)
解决方法:
我还使用黄油刀作为导航标题.对于标题,我创建一个视图持有人:
protected static class HeaderViewHolder {
@BindView(R.id.user_name)
protected TextView mUserNameTxt;
@BindView(R.id.user_email)
protected TextView mUserEmailTxt;
HeaderViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
然后在我的活动的onCreate方法中:
View header = mNavigationView.getHeaderView(0);
mHeaderViewHolder = new HeaderViewHolder(header);
mHeaderViewHolder.mUserEmailTxt.setText(userEmail);
这使我可以像使用其他任何RecyclerView持有人一样使用mHeaderViewHolder.