为啥 recyclerview.setOnCickListener(this) 不可点击?
Posted
技术标签:
【中文标题】为啥 recyclerview.setOnCickListener(this) 不可点击?【英文标题】:Why recyclerview.setOnCickListener(this) not clickable?为什么 recyclerview.setOnCickListener(this) 不可点击? 【发布时间】:2021-10-23 15:14:32 【问题描述】:我试图在我的片段中设置一个简单的点击到一个带有内部 view.onclicklistener 的 recyclerview。我的问题是,为什么我在recyclerview区域点击时没有任何onClick回调?
我的代码如下:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
binding.list.recyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
binding.recyclerview.setClickable(true);
binding.recyclerview.setAdapter(adapter);
binding.recyclerview.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Log.d("log", "Clicked");
);
【问题讨论】:
为什么要在recyclerview而不是item上设置onclick? 【参考方案1】:binding.recyclerview.setOnClickListener
行将使RecyclerView
本身可点击,并且您可能正在寻找当RecyclerView
的任何列表项/子项将被点击时触发的点击监听器。在这种情况下使用this SO 中的类并像这样设置它:
binding.recyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(context, recyclerView ,new RecyclerItemClickListener.OnItemClickListener()
@Override public void onItemClick(View view, int position)
// do whatever
@Override public void onLongItemClick(View view, int position)
// do whatever
)
);
【讨论】:
【参考方案2】:这只是因为您必须执行来自适配器类的单击事件, 点击here获取更多参考资料。
【讨论】:
以上是关于为啥 recyclerview.setOnCickListener(this) 不可点击?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?