Recyclerview滚动到特定位置

时间:2018-08-28 10:10:07

标签: android android-recyclerview

我有一个recyclerview不同的类别。每个类别都有自己的产品。但是,为了获得产品,我们必须针对类别调用API,并将这些产品作为水平recyclerview加载到类别项中。一切都很好。

仅当用户滚动到该特定类别时,才应调用产品API。当用户滚动到特定类别时,我需要调用产品列表API并在类别项中显示。

我的问题是我无法在recyclerview中识别当前可见的项目,并且在滚动时找不到可见的项目。

2 个答案:

答案 0 :(得分:0)

尝试一下:

@BindView(R.id.general_layout)
RecyclerView recyclerView;

最后滚动:

recyclerView.smoothScrollToPosition(recyclerView.getAdapter().getItemCount());

在适配器类中:

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

            ViewHolder(View itemView) {
                super(itemView);
                itemView.setOnClickListener(this);
            }

            @Override
            public void onClick(View view) {
                if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
            }
        }

// convenience method for getting data at click position
    private YourItemType getItem(int id) {
        return mData.get(id);
    }

    // allows clicks events to be caught
    public void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    // parent activity will implement this method to respond to click events
    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }

答案 1 :(得分:0)

添加一个onScrolledListener并从布局管理器中获取最后一个可见项。 一旦最后一个可见项到达小部件的索引,请进行API调用。

   recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        int lastVisibleItemIndex = recyclerView.getLayoutManager().findLastVisibleItemPosition();
         //When the position reaches the element or the one 

         }

    });