Pha*_*tom 5 android synchronization horizontal-scrolling android-recyclerview
我想要实现的水平RecyclerView垂直内RecyclerView。
最终结果应该是这样的:
因此,对于垂直RecyclerView中的每个元素,我需要另一个水平方式。有点像学校的时间表,左边是天,右边是实际时间表,可以水平滚动。
我设法通过将RecyclerView放在第一个RecyclerView项目中来实现这一点。一切正常,但所有水平RecyclerView都在单独滚动。我想要做的是让所有水平RecyclerView同时同步和滚动。我怎样才能做到这一点?
我在垂直适配器的onBindViewHolder方法中设置适配器和水平RecyclerView的方式是这样的:
scheduleAdapter = new ScheduleAdapter(context, data);
holder.scheduleRecyclerView.setAdapter(scheduleAdapter);
holder.scheduleRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
Run Code Online (Sandbox Code Playgroud)
每个 recyclerview 应添加以下内容scroll listener。
m_jParentRecyclerViewLayoutManager是其项目具有 recyclerview 的父 RecyclerView。
RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
scrollAllRecyclerView(recyclerView, dx, dy);
}
private void scrollAllRecyclerView(RecyclerView recyclerView, int dx, int dy) {
// Scroll children RecyclerViews except the recyclerView that is listened.
for (int i = 0; i < m_jParentRecyclerViewLayoutManager.getChildCount(); i++) {
RecyclerView child = (RecyclerView) m_jParentRecyclerViewLayoutManager.getChildAt(i);
if (child != recyclerView) {
scroll(child, dx, dy);
}
}
}
}
private void scroll(RecyclerView recyclerView, int dx, int dy) {
recyclerView.removeOnScrollListener(this);
recyclerView.scrollBy(dx, dy);
recyclerView.addOnScrollListener(this);
}
Run Code Online (Sandbox Code Playgroud)
编辑:在您的父 recyclerview 适配器中。
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView recyclerView = new RecyclerView(mContext);
.. set layout manager & your adapter .
if (scrollListener != null) {
recyclerView.removeOnScrollListener(scrollListener );
recyclerView.addOnScrollListener(scrollListener );
}
return new RecyclerViewViewHolder(recyclerView);
}
Run Code Online (Sandbox Code Playgroud)
编辑2:有一个表视图库可以同步滚动所有子回收视图。你可以查看源码
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |