【发布时间】:2016-02-26 06:28:06
【问题描述】:
我试图让 ViewPager 和 RecyclerView 在显示图像时同步工作。 ViewPager 包含一个 ImageView ,它显示全尺寸图像,而回收器视图显示以前和即将到来的图像的缩略图。
如果用户在 ViewPager 上滑动,则 RecyclerView 会向左/向右同步移动。如果用户滚动然后单击照片,ViewPager 会设置该位置。
这一切都有效,只是为我的应用提供背景。
我卡住的部分是显示当前在 RecyclerView from onPageSelected 中选择的缩略图周围的边框。被认为被选中的元素是当前在 ViewPager 上显示的元素
许多其他问题使用 onClickListener 来处理这个问题。我的 onClickListener 只是调用
viewPager.setCurrentItem(index)
因此,无论何时选择一个项目,都会调用 onPageSelected,自然地来自 ViewPager 或来自单击事件。所以这是我觉得我需要设置边界的地方。
到目前为止,我使用了一些技巧,因为图像数量只有 20 个。
for (int i = 0, ii = recyclerViewAdapter.getItemCount(); i < ii; i++) {
//RecyclerView.ViewHolder holder = recyclerView.findViewHolderForItemId(recyclerViewAdapter.getItemId(i));
RecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(position);
if (holder instanceof RecyclerViewAdapter.RecyclerViewHolder) {
if (i == position) {
...
((RecyclerViewAdapter.RecyclerViewHolder) holder).getViewHolderContainer().setBackground(border);
} else {
((RecyclerViewAdapter.RecyclerViewHolder) holder).getViewHolderContainer().setBackground(null);
}
}
}
这不起作用。如果 get 是正确的位置,因为我是由 ViewPager 提供的,但是在“位置”检索 ViewHolder 的方法似乎都不起作用。
所以,毕竟,我的问题是,是否有人可以向我推荐一种干净的方法(或者此时甚至是 hack),它可以让我根据 ViewPager 的 onPageSelected 的位置更新元素的当前位置.
谢谢。
【问题讨论】:
-
确实 notifyItemChanged(position) 更新了该位置的视图
-
嗨,ankitagrawal。数据集没有任何变化。我所做的只是在结构上改变视图的属性。万一我错了,我确实尝试过但没有运气:(
标签: android android-fragments android-viewpager android-recyclerview