【发布时间】:2017-08-22 15:23:21
【问题描述】:
在回收站视图中创建多个视图持有者没有问题。我遇到的问题是确定标题和项目的定位。
我正在创建一个图库应用,我想将我的专辑名称作为标题,并为每个专辑放置 8 张图片。因此,您将有一个带有专辑标题的标题,然后是该专辑中的 8 张图片。然后是专辑标题和该专辑中的 8 张图片的下一个标题。并继续该计划。如果图片少于 8 张,我希望将其留空,直到下一个标题开始。
我有两个 ArrayList 从中获取数据。专辑和媒体。
我正在尝试在我的适配器的 getItemViewType 中设置类型,但不知道如何像上面提到的那样设置它们。让我困惑的是试图为每个相册设置多个数组列表和未知数量的图片的位置。
再一次,这不是我见过的许多关于在回收站视图中设置多个视图持有者的问题。我有这个概念。我的问题是确定视图持有者的位置。
这就是我的创建和绑定视图看起来如何提供一些上下文
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ALBUM_TYPE) {
return new AlbumHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view, parent, false));
} else if (viewType == HEAD_TYPE) {
return new HeadHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.header_text, parent, false));
} else {
return new MediaHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.card_photo, parent, false));
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof AlbumHolder) {
Album m = albums.get(position);
((AlbumHolder)holder).bindView(m, position);
} else if (holder instanceof HeadHolder) {
if (sortingMode == SortingMode.FOLDER) {
Album m = albums.get(position);
((HeadHolder)holder).bindView(m.getName(), position);
} else {
String m = sortListYear.get(position);
((HeadHolder)holder).bindView(m, position);
}
} else {
Media m = media.get(position);
((MediaHolder)holder).bindView(m, position);
}
}
ALBUM_TYPE 不用于我要问的这个问题。只是 HEAD_TYPE 和 MEDIA_TYPE。
【问题讨论】:
标签: android android-recyclerview