【问题标题】:View layout that are initially hidden, then onclick will make view visible, and vice versa(Android)最初隐藏的视图布局,然后 onclick 将使视图可见,反之亦然(Android)
【发布时间】:2021-01-29 12:22:40
【问题描述】:

我有一个最初设置为 GONE expandableLayout.setVisibility(View.GONE); 的约束布局可见性。我想让视图在发出“setOnClickListener”时可见。然后,当用户再次单击布局时,视图将设置为 Gone Again。

public class ViewHolder extends RecyclerView.ViewHolder {
        TextView mThicc;
        ListView listView;
        ConstraintLayout expandableLayout;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            mThicc = itemView.findViewById(R.id.thicc);
            listView = itemView.findViewById(R.id.stocklist);
            expandableLayout = itemView.findViewById(R.id.expandableLayout);

            expandableLayout.setVisibility(View.GONE);
            
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    expandableLayout.setVisibility(View.GONE);
                }
            });

        }
    }

问题是,当我点击布局时,它不会保持隐藏状态。

【问题讨论】:

    标签: android android-studio android-recyclerview visibility


    【解决方案1】:

    试试这个:

    public class ViewHolder extends RecyclerView.ViewHolder {     
            TextView mThicc;
            ListView listView;
            ConstraintLayout expandableLayout;
    
            public ViewHolder(@NonNull View itemView) {
                super(itemView);
                mThicc = itemView.findViewById(R.id.thicc);
                listView = itemView.findViewById(R.id.stocklist);
                expandableLayout = itemView.findViewById(R.id.expandableLayout);
    
                expandableLayout.setVisibility(View.GONE);
                
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        int visibility =  expandableLayout.getVisibility() == View.GONE ? View.VISIBLE : View.GONE;
                        expandableLayout.setVisibility(visibility);
                    }
                });
    
            }
        }
    

    但我不推荐这种方法,因为如果 ViewHolder 被回收,它将失去其visibility 状态。您需要保持列表项的可见性。

    【讨论】:

      【解决方案2】:

      尝试进行调节并检查按钮单击时视图是否可见或消失

      if(expandableLayout.getVisibility==View.GONE){
          expandableLayout.setVisibility(View.VISIBLE);
      }
       else {
          expandableLayout.setVisibility(View.GONE); 
      }
      

      【讨论】:

      • 这个帮助很大。由于我从 firebase 提取数据,我只需要调用“notifyItemChanged(getAdapterPosition())”,它的工作原理就像魅力
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多