【问题标题】:implement On click listener in RecyclerView Scroll listener在 RecyclerView 滚动监听器中实现 On click 监听器
【发布时间】:2019-08-06 15:15:31
【问题描述】:

我正在使用 Recycleview 在 Horizo​​ntal RecyclerView 中显示联系人图像和姓名,并且加载正常。我已经实现了单击侦听器,它在单击时打开新活动并根据 RecyclerView 的位置显示用户的详细信息。

但我希望 RecyclerView 自动滚动,这样每 5 秒,recycleview 就会自动滚动一次,我在下面的代码中实现了它,它工作正常。

 top.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                int lastItem = llm.findLastCompletelyVisibleItemPosition();
                if(lastItem == llm.getItemCount()-1){
                    mHandler.removeCallbacks(SCROLLING_RUNNABLE);
                    Handler postHandler = new Handler();
                    postHandler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            top.setAdapter(null);
                            top.setAdapter(staggeredBooksAdapter);
                            mHandler.postDelayed(SCROLLING_RUNNABLE, 5000);
                        }
                    }, 5000);
                }
            }
        });
        mHandler.postDelayed(SCROLLING_RUNNABLE, 5000);

但是现在,当我点击任何联系人时,没有任何事情发生,就像以前启动带有用户详细信息的新活动一样。但是当我再次删除滚动监听器时,我可以点击 RecyclerView 项目。

我的 RecyclerView 是

      final LinearLayoutManager llm = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
        top.setLayoutManager(llm);
        top.setHasFixedSize(true);
        staggeredBooksAdapter = new TopAdapter(this, bookslist);

        top.setAdapter(staggeredBooksAdapter);

从适配器类是

 @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {

        database = FirebaseDatabase.getInstance();

        g = bookslist.get(position);

        holder.teacher_location.setText(g.getBlocas());
        holder.teacher_name.setText(g.getSellername());

        holder.profile_details.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                g = bookslist.get(position);
                Intent intent = new Intent(v.getContext(), gender_details.class);
                intent.putExtra(KEY_IMAGE, g.getPics());



                v.getContext().startActivity(intent);
            }
        });

我该如何解决这个问题..提前谢谢。

【问题讨论】:

  • 使用 addOnScrollListener 实现 onScrollStateChanged 并记录状态。点击recyclerView项目时查看状态是空闲还是滚动
  • 你能给我看一些你建议的例子吗?

标签: java android android-recyclerview adapter


【解决方案1】:

将this 类添加到您的项目中,然后添加以下代码:

recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(
        this, top, new RecyclerItemClickListener.OnItemClickListener() {
    @Override
    public void onItemClick(View view, int position) {
        Log.i("recyclerView ", "onItemClick " + position);
    }

    @Override
    public void onLongItemClick(View view, int position) {
        Log.i("recyclerView ", "onLongItemClick " + position);
    }
}));

让我知道它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2015-05-15
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多