使用 ButterKnife 访问导航 header 元素
Accessing navigation header elements using ButterKnife
我有一个 class 可以处理 RecyclerView 中的字符选择,一切正常,但我想用正确的信息更新 NavigationView header 中元素的文本。到目前为止,我一直在尝试使用 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 和 TextView 始终为空)
我还使用 Butter Knife 进行导航 header。对于 header,我创建了一个视图持有者:
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);
}
}
然后在我的activity的onCreate
方法中:
View header = mNavigationView.getHeaderView(0);
mHeaderViewHolder = new HeaderViewHolder(header);
mHeaderViewHolder.mUserEmailTxt.setText(userEmail);
这让我可以像使用任何其他 RecyclerView 支架一样使用 mHeaderViewHolder
。
我有一个 class 可以处理 RecyclerView 中的字符选择,一切正常,但我想用正确的信息更新 NavigationView header 中元素的文本。到目前为止,我一直在尝试使用 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 和 TextView 始终为空)
我还使用 Butter Knife 进行导航 header。对于 header,我创建了一个视图持有者:
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);
}
}
然后在我的activity的onCreate
方法中:
View header = mNavigationView.getHeaderView(0);
mHeaderViewHolder = new HeaderViewHolder(header);
mHeaderViewHolder.mUserEmailTxt.setText(userEmail);
这让我可以像使用任何其他 RecyclerView 支架一样使用 mHeaderViewHolder
。