OnClick Получает запущен несколько раз - PullRequest
0 голосов
/ 06 июня 2018

У меня есть этот метод:

public void questions_makealist() {
    qAdapter = new QandARecyclerViewAdapter(qandas);

    qanda_View.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), qanda_View, new ClickListener() { // en as ons op n boksie druk
        @Override
        public void onClick(View view, int position) {
            Log.e("Heeeeeeeeeeeeeeeeeeeee","On Clicked");
            QandA c_qanda = qandas.get(position);

            flip_it.setDisplayedChild(6);
            reply_View = findViewById(R.id.replies);

            TextView Question_Q = findViewById(R.id.QuestionC);
            TextView Question_A = findViewById(R.id.asked_byC);

            Question_Q.setText(c_qanda.getQuestion());
            Question_A.setText(c_qanda.getABN());

            QID_Reply = c_qanda.getQID();

            maak_die_lys_vir_replies();

        }
        public void onLongClick(View view,int position) {}
        //moet dit hier sit vir die method
    }));

    RecyclerView.LayoutManager qLayoutManager = new LinearLayoutManager(getApplicationContext());
    qanda_View.setLayoutManager(qLayoutManager);
    qanda_View.setAdapter(qAdapter);
    //net vir testing purposes
    //add_item("Ds.Hennie", "40 Dae Reeks: Herstel", 1, 1, "6 Maart 2017");
    qandas.clear();
    qAdapter.notifyDataSetChanged();
    getQuestions getq = new getQuestions();
    getq.execute();
}

И по какой-то причине при нажатии срабатывает количество раз, когда я уже щелкнул по нему.Например, если это третий щелчок, он будет буквально вызывать его 3 раза.

Пожалуйста, посмотрите ниже журнал ошибок, который я настроил.

06-06 17:56:32.584 24779-24779/ng.Wilgespruit.com E/Heeeeeeeeeeeeeeeeeeeee: On Clicked
06-06 17:56:32.592 24779-24779/ng.Wilgespruit.com E/Heeeeeeeeeeeeeeeeeeeee: On Clicked
06-06 17:56:32.593 24779-24779/ng.Wilgespruit.com E/Heeeeeeeeeeeeeeeeeeeee: On Clicked

, пожалуйста, помогите

1 Ответ

0 голосов
/ 06 июня 2018

Это происходит потому, что onTouchListener() запускается несколько раз при прикосновении к виду, тогда как onClickListener() запускается только один раз при нажатии.

Если вы хотите добавить onClickListener() к каждому элементу в RecyclerView, вы можете сделать это внутри класса адаптера.Есть два способа сделать это в классе адаптера.

  • Установите onClickListener в onBindViewHolder() как holder.itemView.setOnCLickListener()
  • Установите его внутри класса ViewHolder, который будет внутри вашего адаптера.

После настройки onClickListener вы также можете передать событие обратно в активность из адаптера с помощью интерфейсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...