【发布时间】:2015-06-08 11:28:02
【问题描述】:
我需要一些建议来实现我的 android 应用程序的设计。
我使用RecyclerView 来显示CardView 的列表。没问题。但是,我需要一个带有 ViewPager 的顶部,以水平滑动显示其他 CardView:
见http://i.stack.imgur.com/akg2i.png
我读到Viewpager 不是很适合放在RecyclerView 中,所以也许更好的方法是创建一个ScrollView,里面有一个ViewPager,然后是一个RecyclerView,然后禁用RecyclerView 的滚动?
另外,我可以将ViewPager 视图与CardView 一起使用吗?
编辑:
好的问题已解决:我从 fmt.Println.MKO 的评论中尝试了这个解决方案
您可以这样做,定义 2 种 Items 类型,一种用于您的常用卡片,一种用于您的 2.RecyclerView,使用 int getItemViewType(int position),您返回特定类型。并在 onCreateViewHolder(ViewGroup parent, int viewType) 中根据类型创建一个视图持有者,无论是您的卡片还是 2. RecyclerView
在我的PostCardAdapter 被RecyclerView 使用:
@Override
public int getItemViewType(int position) {
RecyclerItem p = items.get(position);
if (p.isHeader){
return TYPE_HEADER;
}
return TYPE_POST;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
switch (type) {
case TYPE_HEADER:
RecyclerView rv = (RecyclerView) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.home_header, viewGroup, false);
rv.setHasFixedSize(true);
PostsCardAdapter adapter2 = new PostsCardAdapter(this.headerPosts);
rv.setAdapter(adapter2);
LinearLayoutManager layoutManager = new LinearLayoutManager(viewGroup.getContext(), LinearLayoutManager.HORIZONTAL, false);
rv.setLayoutManager(layoutManager);
return new HeaderViewHolder(rv);
default:
View postView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.post, viewGroup, false);
return new PostsViewHolder(postView);
}
}
onBindViewHolder 中的 TYPE_HEADER 没有什么特别的操作
只需要应用 scrollTo 方法来像 viewPager 一样工作,并找到一个解决方案来显示一个带有圆圈的组件,指示显示了哪个项目。
【问题讨论】:
-
“另外,我可以使用 ViewPager 视图 CardView 吗?”。是的。剩下的,你可以为你想要展示的东西添加一个小的设计模型吗?特别是对于“但是,我需要一个顶部 [...]”。
-
好的,感谢您的更新。我不会提供答案,因为我真的不知道回收器视图和视图寻呼机将如何协同工作的可用性友好性 - 但我建议只需为自定义项目实现具有 ViewHolder 模式的回收器视图。在这些自定义项中(使用相对布局),在顶部添加视图分页器,在下面添加两个卡片视图。 Recycler View 和 ViewPager 都不需要太多时间来实现。测试它并提供结果。补充:我不会使用你的第二种方法。
-
@fmt.Println.MKO 你能在 [stackoverflow.com/questions/30707968/…] 上帮助我吗?实际上,我需要在 viewpager 中滑动的这种卡片视图。
标签: android android-viewpager android-recyclerview android-cardview