写一个RecyclerView相册分组的例子
时间: 2023-11-16 11:24:14 浏览: 36
好的,以下是一个简单的RecyclerView相册分组的例子:
1. 首先,在你的布局文件中添加一个RecyclerView和一个TextView用于显示分组标题:
```xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="LinearLayoutManager"/>
<TextView
android:id="@+id/group_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="18sp"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"/>
```
2. 然后,创建一个相册数据模型类Album:
```java
public class Album {
private String title;
private List<Photo> photos;
public Album(String title, List<Photo> photos) {
this.title = title;
this.photos = photos;
}
public String getTitle() {
return title;
}
public List<Photo> getPhotos() {
return photos;
}
}
```
3. 接下来,创建一个照片数据模型类Photo:
```java
public class Photo {
private String title;
private int imageRes;
public Photo(String title, int imageRes) {
this.title = title;
this.imageRes = imageRes;
}
public String getTitle() {
return title;
}
public int getImageRes() {
return imageRes;
}
}
```
4. 然后,创建一个RecyclerView的Adapter类AlbumAdapter:
```java
public class AlbumAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Album> albums;
public AlbumAdapter(List<Album> albums) {
this.albums = albums;
}
@Override
public int getItemCount() {
return albums.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_album, parent, false);
return new AlbumViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
AlbumViewHolder albumViewHolder = (AlbumViewHolder) holder;
Album album = albums.get(position);
albumViewHolder.title.setText(album.getTitle());
albumViewHolder.photoAdapter.setPhotos(album.getPhotos());
}
private class AlbumViewHolder extends RecyclerView.ViewHolder {
private TextView title;
private RecyclerView photoRecyclerView;
private PhotoAdapter photoAdapter;
public AlbumViewHolder(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
photoRecyclerView = itemView.findViewById(R.id.photo_recycler_view);
photoRecyclerView.setLayoutManager(new GridLayoutManager(itemView.getContext(), 3));
photoAdapter = new PhotoAdapter();
photoRecyclerView.setAdapter(photoAdapter);
}
}
private class PhotoAdapter extends RecyclerView.Adapter<PhotoViewHolder> {
private List<Photo> photos = new ArrayList<>();
public void setPhotos(List<Photo> photos) {
this.photos = photos;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return photos.size();
}
@Override
public PhotoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_photo, parent, false);
return new PhotoViewHolder(view);
}
@Override
public void onBindViewHolder(PhotoViewHolder holder, int position) {
Photo photo = photos.get(position);
holder.title.setText(photo.getTitle());
holder.image.setImageResource(photo.getImageRes());
}
}
private class PhotoViewHolder extends RecyclerView.ViewHolder {
private TextView title;
private ImageView image;
public PhotoViewHolder(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
image = itemView.findViewById(R.id.image);
}
}
}
```
5. 最后,在你的Activity或Fragment中设置RecyclerView的Adapter:
```java
List<Album> albums = new ArrayList<>();
// 初始化相册数据
AlbumAdapter adapter = new AlbumAdapter(albums);
recyclerView.setAdapter(adapter);
```
这样,你就可以创建一个简单的RecyclerView相册分组了。