在 ClickListener 的适配器中使视图可见或消失

Make View Visible or Gone in adapter on ClickListener

我正在我的应用程序中显示一个 recyclerview,我希望当用户单击 recyclerview 项目时,隐藏视图应该对他可见,并且在单击该项目时它应该消失。 我的代码:

 holder.parentView.setOnClickListener(v -> {
                    if (viewVisibiltyCheck) {
                        holder.expandView.setVisibility(View.VISIBLE);
                        viewVisibiltyCheck = false;
                    } else {
                        viewVisibiltyCheck = true;
                        holder.expandView.setVisibility(View.GONE);
                    }

                });

我正在使用 Firebase Recycler.I 有一个布尔值检查,即当我点击列表中的哪个项目的真实视图变得可见时,如果我点击同一个项目,它就会成为布尔值 false.Now很好并隐藏视图但是如果我单击列表中的任何其他项目并且第一个视图可见我必须双击该项目因为第一次单击它会使布尔值变为真因为当我单击第一个项目列表时它变为假并且然后在第二次点击时它会显示视图。

是否有任何逻辑可以让我单击一下就可以完成所有操作?谢谢

如果我理解正确,您的问题是 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);
                    }

                });

编辑: 您需要将它放在创建容器及其视图的位置,例如 expandView。通过这种方式,您可以将各种参数关联到视图,但 Bruce 的回答可能在您的情况下更容易。

public class MyViewHolder extends RecyclerView.ViewHolder {
    View expandView;
    boolean viewVisibiltyCheck;

    public MyViewHolder(View itemView) {
        super(itemView);
         /* your code */
        viewVisibiltyCheck = false;
    }

您根本不需要那个 viewVisibilityCheck。

holder.parentView.setOnClickListener(v -> {
                    if (holder.expandView.getVisibility() == View.GONE) {
                        holder.expandView.setVisibility(View.VISIBLE);
                    } else {
                        holder.expandView.setVisibility(View.GONE);
                    }
            });