Android 必须双击RecyclerView项的onClick调用';s文本视图

Android 必须双击RecyclerView项的onClick调用';s文本视图,android,android-fragments,adapter,onclicklistener,double-click,Android,Android Fragments,Adapter,Onclicklistener,Double Click,我在片段中有一个RecyclerView。此片段在多个活动中重用。我已经在我的片段和回收视图.Adapter之间设置了一个契约接口。本合同具有以下功能: 回调接口 在我的片段中,我实现了如下侦听器: 碎片 在适配器中,我执行以下操作: RecyclerView.适配器 公共类samdeccapter扩展了RecyclerView.Adapter{ 私有文本视图ClickListener McClickListener; public void setClickListener(SampleFra

我在
片段中有一个
RecyclerView
。此
片段
在多个活动中重用。我已经在我的
片段
回收视图.Adapter
之间设置了一个契约
接口
。本合同具有以下功能:

回调接口 在我的片段中,我实现了如下侦听器:

碎片 在适配器中,我执行以下操作:

RecyclerView.适配器
公共类samdeccapter扩展了RecyclerView.Adapter{
私有文本视图ClickListener McClickListener;
public void setClickListener(SampleFragment SampleFragment){
试一试{
this.mClickListener=((TextViewClickListener)sampleFragment);
}catch(ClassCastException e){
//打印错误
}
}
//更多初始化代码
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
SampleViewHolder sampleVH=(SampleViewHolder)支架;
sampleVH.textView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mClickListener.onHandleClick();
}
});
}
公共类SampleViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图文本视图;
公共样本视图持有者(视图v){
超级(五);
textView=//初始化textView
}
}
}
我的问题是为什么需要双击
onHandleClick
方法才能在我的
Fragment
中触发,我该如何解决这个问题

我想让用户只需点击
TextView
一次
onHandleClick()
即可触发。 如果此设置太复杂,是否有更简单的过程,我知道
回收视图的
OnItemTouchListener()
,这不适合我的用例-我特别希望单击事件仅作为
视图持有者
视图的某些部分的句柄

更新:


我相信问题可能在于,由于
视图持有者有一个整体
视图,我假设是
视图。一旦该
视图触发了clicklistener
,然后触发了
文本视图,我将对此进行进一步调查。

删除android:focusableInTouchMode=“true”从你在adapter中膨胀的布局中删除android:focusableInTouchMode=“true”
android:focusable=“true”
为我做到了这一点
public interface TextViewClickListener {

    void onHandleClick();

}
public class ExampleFragment extends Fragment implements TextViewClickListener {

    // Initializing Code....
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_sample, null);
        mRecyclerView = // Initialize 
        mAdapter.setClickListener(this);
        return root;
    }

    // Overriding listener
    @Override
    public void onHandleClick() {
        // Do something
    }

}
public class SampleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private TextViewClickListener mClickListener;

    public void setClickListener(SampleFragment sampleFragment) {
        try {
            this.mClickListener = ((TextViewClickListener) sampleFragment);
        } catch (ClassCastException e) {
            // Print error
        }
    }

    // More initializing code

    public void onBindViewholder(RecyclerView.ViewHolder holder, int position) {

        SampleViewHolder sampleVH = (SampleViewHolder) holder;
        sampleVH.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mClickListener.onHandleClick();
            }
        });

    }

    public class SampleViewHolder extends RecyclerView.ViewHolder {
    
        private TextView textView;

        public SampleViewHolder(View v) {
            super(v);
            textView = // Initialize textview
        }

    }

}