我可以有两个XML布局使用相同的视图使用Kotlin综合扩展?

我有一个列表视图,具有可扩展的行。 当我点击行,我膨胀了一个不同的xml布局是非常相似的( item_view (左)和item_view_expanded (右))和几乎所有相同的意见,但一些子视图出现在不同的大小(例如图像视图被放大),在展开的视图中还有一个按钮(保存照片)。

折叠的视图 展开的视图

在将此文件转换为kotlin并尝试使用kotlin合成扩展访问视图时,我收到错误Overload Resolution Ambiguity 。 这是有道理的,因为确实有两个XML文件具有相同的ID,并且都在这个文件中导入。 我看到的大多数stackoverflow职位(如这一个 )通过删除其中一个导入语句或更改ID解决。 但我希望ID匹配,因为我想有一个共享的ViewHolder可以绑定这两个不同的意见。 毕竟,文本视图和图像都是相同的内容,只是在不同的视觉布局。

我可以在Java中使用butterknife来做到这一点,因为我只是简单地将折叠布局( download )中不存在的按钮注释为可空,并在绑定中进行空检查。 我想知道我怎么可以有两个XML布局使用相同的约束,因为几乎一切都是一样的。 这可以使用合成扩展在kotlin中完成吗?

这是我的ViewHolder的Java代码

  public static class ItemViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.tvName) TextView mNameTextView; @BindView(R.id.tvRelationship) TextView mRelationshipTextView; @BindView(R.id.tvLifespan) TextView mLifespanTextView; @BindView(R.id.topDivider) View mTopDividerView; @BindView(R.id.bottomDivider) View mBottomDividerView; @BindView(R.id.imageView) ImageView mImageView; @Nullable @BindView(R.id.savePhoto) TextView mSavePhoto; public ItemViewHolder(final View view) { super(view); ButterKnife.bind(this, view); } private void bindItem(final int position, final PathPerson pathPerson, final PathDetailAdapter pathDetailAdapter) { // item mNameTextView.setTag(position); PathUtilities.loadRoundedLeftCornersImageForGender(pathPerson, mImageView); mNameTextView.setText(pathPerson.getFullName()); itemView.setOnClickListener(v -> { pathPerson.toggleExpanded(); pathDetailAdapter.notifyItemChanged(position); }); if (mSavePhoto != null) { mSavePhoto.setOnClickListener(v -> { // TODO: 9/7/17 download original Toast.makeText(itemView.getContext(), R.string.downloading, Toast.LENGTH_SHORT).show(); }); } PathUtilities.setLifespan(pathPerson, mLifespanTextView); PathUtilities.setRelationshipTextAndColorForGender(pathPerson, mRelationshipTextView); if (position == 1) { mTopDividerView.setVisibility(View.VISIBLE); mBottomDividerView.setVisibility(View.VISIBLE); } else if (position == pathDetailAdapter.mPathList.size() - 1) { mTopDividerView.setVisibility(View.GONE); mBottomDividerView.setVisibility(View.GONE); } else { mTopDividerView.setVisibility(View.GONE); mBottomDividerView.setVisibility(View.VISIBLE); } } } 

原来这个问题是通过删除一个import语句来解决的。 在我的情况下,我需要保持有一个额外的下载按钮(两个超级集)