我遇到错误。(图像文件的真实路径)

时间:2018-07-01 14:02:04

标签: java android permissions android-gallery

enter image description here

我是第一个使用android studio的人,所以遇到很多困难。 我想在“画廊”选项卡中创建自己的画廊。 Gallery选项卡是片段和gridview。 我得到URI并转换为路径。 该文件在模拟器中。 无意中,realpath在GALLERY TAB中查看,我想在选项卡中查看真实图像。 我不知道如何将路径转换为图像文件。 对不起,英语不好。

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;
}

此代码在片段文件中。

1 个答案:

答案 0 :(得分:0)

将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 ,您将获得很多示例代码。