【问题标题】:recycler view center selected item回收站查看中心选中项目
【发布时间】:2017-02-20 10:32:02
【问题描述】:

我正在使用 RecyclerView 水平滚动项目。单击任何项​​目时,它将被选中并更改其背景。我需要的是当项目被选中时,它会滚动到中心。第一项将在开头居中。

任何 cmets 将不胜感激。我的代码在下面,但它没有将所有项目居中。

recyclerView.addOnItemTouchListener(
            new RecyclerItemClickListener(getActivity(), recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
                @Override
                public void onItemClick(View view, final int position) {
                    // TODO Handle item click
                    editAdapter.setSelection(position);
                    editAdapter.notifyDataSetChanged();
                    final int scrollX = (view.getLeft() - (center)) + (view.getWidth() / 2);
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            recyclerView.scrollBy(scrollX, 0);
                        }
                    }, 100);
                }

                @Override
                public void onLongItemClick(View view, int position) {

                }
            })
    );

【问题讨论】:

    标签: android


    【解决方案1】:

    在你的适配器中创建一个这样的接口

     public interface NotifyPositionChange
    {
        public void scrollToPosition(int position);
    }
    

    在适配器的构造函数中传递一个额外的参数。

    public YourAdapter(NotifyPositionChange notifyPositionChange)
    {
      this.notifyPosition=notifyPositionChange;
    }
    

    这样在适配器中选择item时接口的调用方法

    notifyPositionChange.scrollToPosition(position);
    

    传递您当前的位置。 并在您的活动中实现此接口并覆盖其方法。

     @Override
    public void scrollToPosition(int position) {
    
            yourRecyclerView.getLayoutManager().smoothScrollToPosition(yourRecyclerView, null, position - 1);
        }
    

    【讨论】:

    • 发生了什么?
    • 您是否将其作为参数添加到适配器 yourdAdapter=new YourAdapter(this); ?
    • 我没有添加界面。我添加了 yourRecyclerView.getLayoutManager().smoothScrollToPosition(yourRecyclerView, null, position - 1);这是我在我的问题中指定的点击方法
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多