实现接入多个U盘,读取各个U盘图片,并按U盘名在recyclerView展示图片代码实现
时间: 2023-04-08 10:03:07 浏览: 70
以下是一个实现接入多个U盘,读取各个U盘图片,并按U盘名在recyclerView展示图片的代码示例:
```
private ArrayList<String> mUdiskPaths = new ArrayList<>();
private ArrayList<String> mImagePaths = new ArrayList<>();
private void initUdiskPaths() {
File[] files = new File("/mnt/usb_storage/").listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
mUdiskPaths.add(file.getAbsolutePath());
}
}
}
}
private void readImagesFromUdisks() {
for (String udiskPath : mUdiskPaths) {
File[] files = new File(udiskPath).listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile() && file.getName().endsWith(".jpg")) {
mImagePaths.add(file.getAbsolutePath());
}
}
}
}
}
private void showImagesInRecyclerView() {
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
recyclerView.setAdapter(new ImageAdapter(mImagePaths));
}
private class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
private ArrayList<String> mImagePaths;
public ImageAdapter(ArrayList<String> imagePaths) {
mImagePaths = imagePaths;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String imagePath = mImagePaths.get(position);
Glide.with(holder.itemView.getContext()).load(imagePath).into(holder.imageView);
}
@Override
public int getItemCount() {
return mImagePaths.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
```
在这个示例中,我们首先通过访问`/mnt/usb_storage/`目录来获取所有连接的U盘的路径,然后遍历每个U盘,读取其中所有的`.jpg`文件的路径,并将它们存储在一个`ArrayList`中。最后,我们使用`RecyclerView`来展示所有的图片,每个图片都使用`Glide`库来加载。