Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OnClick被多次触发_Java_Android_Onclick - Fatal编程技术网

Java OnClick被多次触发

Java OnClick被多次触发,java,android,onclick,Java,Android,Onclick,我有这个方法: 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

我有这个方法:

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

请帮助发生这种情况是因为当触摸视图时会多次触发
onTouchListener()
,而单击视图时只会触发一次
onClickListener()

如果要将
onClickListener()
添加到RecyclerView中的每个项,可以在适配器类中执行此操作。在adapter类中有两种方法可以实现这一点

  • 将onClickListener在
    onBindViewHolder()
    中设置为
    holder.itemView.setOnCLickListener()
  • 将其设置在ViewHolder类中,该类将位于适配器中
设置onClickListener后,还可以使用接口将事件从适配器传递回活动