回收站项目按钮的单击仅在第二次单击时起作用

时间:2019-04-03 13:29:35

标签: android android-recyclerview recycler-adapter

recyclerview适配器中有一个按钮,当用户单击该按钮时,我想保持隐藏和显示的布局,现在的问题是,它仅在第二次单击时有效,以下是我的代码

holder.notification_rl.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {


                        if(flag==true)
                        {
                            holder.iv_arrow.setImageResource(R.mipmap.down);
                            holder.notification_iv.setVisibility(View.GONE);
                            holder.notification_sub_text.setSingleLine(true);
                            holder.notification_sub_text.setEllipsize(TextUtils.TruncateAt.END);
                            int n = 1; // the exact number of lines you want to display
                            holder.notification_sub_text.setLines(n);
                            flag = false;
                        }
                        else if(flag==false)
                        {
                            holder.iv_arrow.setImageResource(R.mipmap.up);
                            holder.notification_sub_text.setVisibility(View.VISIBLE);
                            holder.notification_iv.setVisibility(View.VISIBLE);
                            holder.notification_sub_text.setSingleLine(false);
                            int n = 2; // the exact number of lines you want to display
                            holder.notification_sub_text.setLines(n);
                            flag = true;
                        }
                    }
                });

1 个答案:

答案 0 :(得分:0)

不要尝试使用boolean管理可见性。它肯定可以工作,但是会使事情变得更复杂。除此之外,您可以通过更好地检查视图可见性来进行管理。

首先,通过将holder.notification_iv.setVisibility(View.GONE);放在onBindViewHolder方法中来隐藏子布局,或者也可以通过XML进行管理。

holder.notification_rl.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


                    if(holder.notification_iv.getVisibility()==View.VISIBLE)
                    {
                        holder.iv_arrow.setImageResource(R.mipmap.down);
                        holder.notification_iv.setVisibility(View.GONE);
                        holder.notification_sub_text.setSingleLine(true);
                        holder.notification_sub_text.setEllipsize(TextUtils.TruncateAt.END);
                        int n = 1; // the exact number of lines you want to display
                        holder.notification_sub_text.setLines(n);
                    }
                    else
                     {
                        holder.iv_arrow.setImageResource(R.mipmap.up);
                        holder.notification_sub_text.setVisibility(View.VISIBLE);
                        holder.notification_iv.setVisibility(View.VISIBLE);
                        holder.notification_sub_text.setSingleLine(false);
                        int n = 2; // the exact number of lines you want to display
                        holder.notification_sub_text.setLines(n);
                    }
                }
            });