【问题标题】: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?

标签: android android-recyclerview onclicklistener


【解决方案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获取更多参考资料。

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多