我有一个具有可展开行的列表视图。当我单击该行时,我会放大一个不同的xml布局,该布局非常相似(item_view
(左)和item_view_expand
(右)),并且具有几乎所有相同的视图,但是一些子视图以不同的大小显示(例如图像视图被放大),并且在扩展的视图中有一个额外的按钮(保存照片)。
在将该文件转换为kotlin并尝试使用kotlin合成扩展访问视图时,我收到错误重载解析歧义
。这是有意义的,因为确实有两个xml文件具有相同的ID,并且都导入到这个文件中。我看到的大多数stackoverflow帖子(比如这篇文章)都是通过删除一条导入语句或更改ID来解决的。但是我希望ID匹配,因为我希望有一个共享的ViewHolder可以绑定这两个不同的视图。毕竟,文本视图和图像都是相同的内容,只是在不同的视觉布局中。
我可以用Butternife在Java中做到这一点,因为我只需将折叠布局(Download
)中不存在的按钮注释为nullable,并在绑定中执行一些null检查。我想知道如何让两个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);
}
}
}
结果,通过删除一个导入语句,问题得到了解决。在我的例子中,我需要保留一个有额外下载按钮的按钮(这两个按钮的超级集)
我可以同时使用工具和扩展器吗?因为当我在同一个类上使用实现时,我需要在另一个类上继承一些东西。 怎么会是那样?
我在构建一个XML布局时遇到了一个问题:屏幕的一半是videoView,有两个孩子的可扩展列表,视频框下面有一些textView。文本位于列表下方,因此如果我展开列表,列表将填充半屏幕的其余部分,它应该能够滚动到文本视图。 我的想法是将可扩展列表放在滚动视图中,但我无法扩展列表。 我的布局如下: 线性布局 视频视图 滚动视图 线性布局 可扩展列表视图 文本视图 有没有其他方法来实现我的意图,或者为
问题内容: 如果我有几个具有所需功能的类,但想单独存储以进行组织,我可以扩展一个类以同时拥有这两个类吗? 即 编辑:我知道如何一次扩展一个类,但是我正在寻找一种使用多个基类立即扩展一个类的方法- AFAIK,您不能在PHP中做到这一点,但是应该有一些解决方法,而不必诉诸于, 问题答案: 回答您的编辑: 如果您确实想伪造多重继承,则可以使用魔术函数__call()。 尽管从A类用户的角度来看,这很丑
我需要在两个活动中使用相同的ArrayAdapter。在MainActivity中,我只需要显示isConsumido()=true的项,而在另一个活动中,我需要显示所有项。 我的MainActivity适配器: 现在,我使用两个适配器,但是当我在TelaCadastrados的一个适配器项中检查isConsumido()时,MainActivity中的同一项需要变为不可见,而当我删除TelaCa
我需要向3个服务发送消息,并在最后聚合结果 这很容易通过发布订阅频道实现- 当其中一个服务实际上是对其他服务的2次调用时,就会出现问题。现在我想介绍另外的和聚合器。 例如。 因此不会对消息进行分组(逐个发送)。 聚合器1从聚合器2获取结果并发送消息,无需等待service activator组1的消息。 有什么建议吗?
我想编写一个应用程序来使用netconf配置网元,我正在寻找一个开源的netconf客户端来实现它。 我已经尝试并成功地使用Jnc做到了这一点。问题是jnc不支持netconf 1.1,我正在寻找另一种解决方案。 是否可以通过opendaylight使用相同的功能?在jnc中,我将Yang文件转换为java类,填充它们,然后配置设备。对于相同的功能,我应该在opendaylight中执行哪些步骤?