Как обрабатывать лонгклик в андроиде

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

     public class ReminderstestExplaination extends Fragment {

    RecyclerView testexplntion_recycle;
    CustomRecyclerview customRecyclerview;
    LinearLayout reminderpage_addbutton,extraremlay,del_editlay;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.remindertest_explaination,container,false);

        extraremlay = v.findViewById (R.id.extraremlay);

        extraremlay.setOnLongClickListener (new View.OnLongClickListener () {
                                                @Override
                                                public boolean onLongClick(View view) {

                                                    del_editlay.setVisibility (View.VISIBLE);

                                                    return true;

                                                }
                                            });
}

Пожалуйста, прикрепите XML и полный код вашего фрагмента

Dmitriy Miyai 29.05.2019 07:59

вам нужно отладить его, чтобы узнать, почему он не работает

Vladyslav Matviienko 29.05.2019 08:10

Вам нужно, чтобы код стал видимым при длинном щелчке и невидимым при другом длинном щелчке или обычном щелчке? Ваш текущий OnLongClickListener устанавливает видимость только в true. Если вы хотите переключать оба состояния с помощью длинного щелчка, вам нужно условие if.

shriakhilc 29.05.2019 08:23

похоже, вы работаете со скрытием/показом в recyclerview, можете ли вы попытаться создать пример активности с помощью кнопки и просмотра и попробовать с ними тот же код.

karan 29.05.2019 08:24
stackoverflow.com/questions/37597203/… - Пожалуйста, проверьте эту ссылку, это может быть полезно
Madhu 29.05.2019 08:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сделайте это, отслеживайте видимость с помощью логической переменной и меняйте ее каждый раз, когда выполняется длинный щелчок.

public class ReminderstestExplaination extends Fragment {
boolean isVisible = false;
RecyclerView testexplntion_recycle;
CustomRecyclerview customRecyclerview;
LinearLayout reminderpage_addbutton,extraremlay,del_editlay;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.remindertest_explaination,container,false);

    extraremlay = v.findViewById (R.id.extraremlay);

    extraremlay.setOnLongClickListener (new View.OnLongClickListener () {
                                            @Override
                                            public boolean onLongClick(View view) {

                                               if (isVisible) {
                                                isVisible = false;
                                               del_editlay.setVisibility 
                                              (View.INVISIBLE);
                                              }
                                               }
                                               else {
                                             isVisible = true;
                                             del_editlay.setVisibility 
                                              (View.VISIBLE);}

                                                return true;

                                            }
                                        });

}

Я полагаю, del_editlay.getVisibility() или del_editlay.isShown() можно использовать вместо сохранения логического значения?

shriakhilc 29.05.2019 08:30

Другие вопросы по теме