【发布时间】:2022-01-18 14:17:28
【问题描述】:
我正在开发一个带有可扩展 Recyclerview 的应用程序。但扩张并没有像预期的那样奏效。如果我在展开另一个项目后单击处于折叠状态的任何项目,则没有任何效果。如果单击任何其他项目,我想自动折叠以前展开的项目。
请查看我的相同代码:
final boolean isExpanded = position==mExpandedPosition;
holder.expandableLayout.setVisibility(isExpanded?View.VISIBLE:View.GONE);
holder.itemView.setActivated(isExpanded);
if (isExpanded) {
previousExpandedPosition = position;
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mExpandedPosition = isExpanded ? -1:position;
notifyItemChanged(previousExpandedPosition);
notifyItemChanged(position);
}
});
如果我的实现有任何问题,请纠正我。
【问题讨论】:
-
发生这种情况是因为您只是在通知当前项目,因此也请尝试通知之前的展开位置。
-
@Bhavin 更新了代码。也试过了。但有时如果随机点击项目,它会不起作用。
-
我已经发布了一个答案尝试,否则我们会尝试一些不同的东西。而且我不明白你为什么要管理 previousExpandedPosition,因为如果管理不善,它会产生问题。并且可能有可能所选项目当前未显示在视图中,因此不会调用 onBindViewHolder 方法。
标签: android android-recyclerview android-adapter android-cardview android-expandable-list-view