java - 在 RecyclerView 滚动监听器中实现单击监听器

标签 java android android-recyclerview adapter

我正在使用 Recycleview 在 Horizo​​ntal RecyclerView 中显示联系人图像和姓名,并且加载正常。我已经实现了 Click 监听器,单击监听器会打开新 Activity ,并根据 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);

但是现在,当我单击任何联系人时,不会像以前那样发生任何事情,即使用用户详细信息启动新 Activity 。但是当我删除滚动监听器时,我可以再次单击 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);
            }
        });

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

最佳答案

添加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);
    }
}));

让我知道它是否有效。

关于java - 在 RecyclerView 滚动监听器中实现单击监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57379168/

相关文章:

android - 如何实现从Fragment A到Fragment B的监听器?

java - 将 PrinterWriter 与字符串 ArrayList 结合使用

android - rx-java2 Schedulers.io() steel 从 mainThread 调用方法

android - 从谷歌地图的可见部分检索距离

android - 带有 ListView 和底部 TextField 的 Flutter AlertDialog

android - 如何以编程方式启动滑动以使用 RecyclerView 关闭

android - RecyclerView 的 getItemViewType() 返回 String

Java可变字节数组数据结构

java - "The value of the local variable SoundButton38 is not used"但我想使用它?

Java奇怪的图形在lock.await()时闪烁