下面是一个示例代码,演示如何从外部存储中列出图像,并使用RecyclerView显示它们:
public class ImageAdapter extends RecyclerView.Adapter {
private List imagePaths;
public ImageAdapter(List imagePaths) {
this.imagePaths = imagePaths;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_item, parent, false);
return new ImageViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
String imagePath = imagePaths.get(position);
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
holder.imageView.setImageBitmap(bitmap);
}
@Override
public int getItemCount() {
return imagePaths.size();
}
public static class ImageViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public ImageViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ImageAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
List imagePaths = getImagePathsFromExternalStorage();
adapter = new ImageAdapter(imagePaths);
recyclerView.setAdapter(adapter);
}
private List getImagePathsFromExternalStorage() {
List imagePaths = new ArrayList<>();
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures";
File directory = new File(path);
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile() && file.getName().endsWith(".jpg")) {
imagePaths.add(file.getAbsolutePath());
}
}
}
return imagePaths;
}
}
这个示例假设图像位于外部存储的"Pictures"目录中,且文件类型为.jpg。你可以根据自己的需求进行修改。