recyclerview联动滑动 关键代码

private void adjustUILabel(RecyclerView recyclerView) {
    final int count = rollHolder.recyclerView.getLayoutManager().getChildCount();
    View v = recyclerView.getLayoutManager().getChildAt(0);
    if (v == null) return;
    final int index = recyclerView.getChildAdapterPosition(v);
    final int left = v.getLeft();

    for (int i = 0; i < count; i++) {
        RecyclerView.ViewHolder holder = rollHolder.recyclerView.getChildViewHolder(rollHolder.recyclerView.getLayoutManager().getChildAt(i));
        if (holder != null && holder instanceof MarketViewHolder) {
            LinearLayoutManager manager = (LinearLayoutManager) ((MarketViewHolder) holder).recyclerView.getLayoutManager();
            manager.scrollToPositionWithOffset(index, left);
        }
    }

    rollHolder.recyclerView.clearOnScrollListeners();
    rollHolder.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            for (int i = 0; i < count; i++) {
                if (recyclerView.getLayoutManager() == null) return;
                if (recyclerView.getLayoutManager().getChildAt(i) == null) return;
                RecyclerView.ViewHolder holder = recyclerView.getChildViewHolder(recyclerView.getLayoutManager().getChildAt(i));
                if (holder != null && holder instanceof MarketViewHolder) {
                    LinearLayoutManager manager = (LinearLayoutManager) ((MarketViewHolder) holder).recyclerView.getLayoutManager();
                    manager.scrollToPositionWithOffset(index, left);
                }
            }
        }
    });
}

你可能感兴趣的:(学习笔记)