java - 我收到一个错误。(图像文件的真实路径)
问题描述
我是第一个使用android studio的,所以遇到了很多困难。我想在 GALLERY 选项卡中创建自己的画廊。图库选项卡是一个片段和网格视图。我得到 URI 并转换为路径。该文件在模拟器中。无意中,在 GALLERY TAB 中查看了 realpath,我想在选项卡中查看真实图像。我不知道如何将路径转换为图像文件。抱歉英语不好。
int a = 0;
public String getPath(Uri uri) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(uri, null, null, null ,null);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToPosition(a);
return cursor.getString(columnIndex);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_tab2, container, false);
GridView f1 = view.findViewById(R.id.gridView);
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Uri[] projection = {MediaStore.Images.Media.EXTERNAL_CONTENT_URI};
Cursor cursor = getActivity().getContentResolver().query(uri, null, null, null ,null);
ArrayList<String> result = new ArrayList<String>();
if(cursor.moveToFirst()){
do{
result.add(getPath(uri));
a++;
}while(cursor.moveToNext());
}
ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, result);
f1.setAdapter(arrayadapter);
return f1;
}
此代码在片段文件中。
解决方案
在适配器布局中添加 ImageView 作为项目。将 Glide 库添加到您的项目并使用 uri 加载图像。您也可以使用其他图像加载库。
检查此链接以了解如何使用库和示例。https://github.com/bumptech/glide
示例代码
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
GlideApp.with(this).load(new File(pictureUri.getPath())).into(imageView);
您不能使用 ArrayAdapter 来实现您想要的。用 imageView搜索RecyclerView你会得到很多示例代码。
推荐阅读
- angular - 如何将一组 Observable 合并为一个具有相同返回类型的 Observable
- php - 使用个人访问令牌访问 laravel api 时出现内部服务器错误 [500]
- sql - 如何在触发器中使用更新表中的数据?
- r - igraph contract_vertices 在交互过程中的不同点抛出类型错误
- python - Looping through html with beautiful soup in Python
- android - Android Studio:右键单击并运行测试始终默认为 Gradle 配置
- java - 复制所选 JTable 单元格的单元格值而不是行
- python - 从 2 个文本文件中删除相同的文本
- c++ - CMAKE 错误:“无法打开源文件”:“CMakeCCompilerId.c”
- c# - 从排序数组中删除重复项而不创建新数组