recyclerview 两行四列图片
时间: 2023-08-29 07:07:54 浏览: 41
要实现两行四列的图片列表,你可以按照以下步骤操作:
1. 在布局文件中添加一个RecyclerView控件,设置宽度和高度为match_parent。
2. 创建一个Adapter类,继承自RecyclerView.Adapter,并实现onCreateViewHolder、onBindViewHolder和getItemCount方法。
3. 在onCreateViewHolder方法中,加载一个ImageView控件,并创建一个ViewHolder对象返回。
4. 在onBindViewHolder方法中,根据position获取对应的图片资源,并将其设置到ViewHolder中的ImageView控件中。
5. 设置RecyclerView的LayoutManager为GridLayoutManager,并设置列数为4。
下面是一个简单的示例代码:
1. 布局文件:
```
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
2. Adapter类:
```
public class ImageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Integer> mImageList;
public ImageAdapter(List<Integer> imageList) {
mImageList = imageList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ImageView imageView = new ImageView(parent.getContext());
RecyclerView.LayoutParams layoutParams = new RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
imageView.setLayoutParams(layoutParams);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
return new ImageViewHolder(imageView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ImageViewHolder imageViewHolder = (ImageViewHolder) holder;
imageViewHolder.imageView.setImageResource(mImageList.get(position));
}
@Override
public int getItemCount() {
return mImageList.size();
}
private static class ImageViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
ImageViewHolder(ImageView imageView) {
super(imageView);
this.imageView = imageView;
}
}
}
```
3. 设置RecyclerView:
```
RecyclerView recyclerView = findViewById(R.id.recyclerView);
List<Integer> imageList = new ArrayList<>();
imageList.add(R.drawable.image1);
imageList.add(R.drawable.image2);
// 添加更多图片...
ImageAdapter adapter = new ImageAdapter(imageList);
recyclerView.setLayoutManager(new GridLayoutManager(this, 4));
recyclerView.setAdapter(adapter);
```