我在我的应用程序中显示回收器视图,我希望当用户单击回收器视图项目时,他应该可以看到隐藏的视图,并且在单击返回该项目时它应该消失。 我的代码 :
holder.parentView.setOnClickListener(v -> {
if (viewVisibiltyCheck) {
holder.expandView.setVisibility(View.VISIBLE);
viewVisibiltyCheck = false;
} else {
viewVisibiltyCheck = true;
holder.expandView.setVisibility(View.GONE);
}
});
我正在使用Firebase Recycler.我有一个布尔检查,当真实视图变得可见时,我单击列表中的哪个项目并使布尔值为假。现在,如果我单击同一项目,它将正常工作并隐藏视图,但是如果我单击列表中的任何其他项目并且第一个视图可见,我必须双击该项目,因为在第一次单击时,它将使布尔值为真,因为当我单击第一个项目列表时它变为假,然后在第二次单击时它将向我显示视图。
有什么逻辑可以让我一键完成所有操作吗?谢库
你根本不需要那个 viewVisibilityCheck。
holder.parentView.setOnClickListener(v -> {
if (holder.expandView.getVisibility() == View.GONE) {
holder.expandView.setVisibility(View.VISIBLE);
} else {
holder.expandView.setVisibility(View.GONE);
}
});
如果我理解正确,您的问题是viewVisibiltyCheck
值未连接到您正在单击的正确项目。如果是这种情况,只需将viewVisibiltyCheck
设置为holder
的属性,这样您就可以像访问expandView
一样访问它。
所以像这样的事情可能是:
holder.parentView.setOnClickListener(v -> {
if (holder.viewVisibiltyCheck) {
holder.expandView.setVisibility(View.VISIBLE);
holder.viewVisibiltyCheck = false;
} else {
holder.viewVisibiltyCheck = true;
holder.expandView.setVisibility(View.GONE);
}
});
编辑:您需要将其放在创建持有人及其视图的位置,例如展开视图。通过这种方式,您可以将各种参数关联到视图,但 Bruce 回答说,在您的情况下可能更容易。
public class MyViewHolder extends RecyclerView.ViewHolder {
View expandView;
boolean viewVisibiltyCheck;
public MyViewHolder(View itemView) {
super(itemView);
/* your code */
viewVisibiltyCheck = false;
}