Recycler Item кнопка работает только на второй клик - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть одна кнопка в адаптере утилита просмотра, когда пользователь нажимает на нее, я хочу сохранить скрытие и отображение макета, теперь проблема в том, что она работает только при втором нажатии, мой код следующий

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 голосов
/ 08 апреля 2019

Не пытайтесь управлять видимостью с помощью boolean.it определенно будет работать, но это усложнит ситуацию.кроме этого, вы можете управлять этим, проверяя видимость представления лучшим способом.

Первоначально скрывайте свой суб-макет, добавив 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);
                    }
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...