Выбор изображения из галереи MVVMCross

157
13 февраля 2018, 05:18

В axml описана кнопка, по клику на кнопку, нужно открыть галерею и передать в ViewModel путь к выбранному изображению. Реализация в рамках MVVMCross, нужен именно путь, так как он будет сохранятся в бд.

Answer 1

В первую очередь необходимо создать обьект, после взаимодействия с которым будет вызван метод CreateImageIntent();

private void CreateImageIntent()
    {
        var imageIntent = new Intent();
        imageIntent.SetType("image/*");
        imageIntent.SetAction(Intent.ActionGetContent);
        StartActivityForResult(Intent.CreateChooser(imageIntent , "Select photo") , 0);
    }

После выбора изображения и закрытия Активити галереи будет вызван метод

protected override void OnActivityResult(int requestCode , Android.App.Result resultCode , Intent data)
    {
        base.OnActivityResult(requestCode , resultCode , data);
        if (resultCode == Android.App.Result.Ok)
        {
            Android.Net.Uri uri = data.Data;
            imgPath.ImageUrl = uri.Path;
            ImgPathHolder.ImgPathString = GetRealPathFromURI(uri);
        }
    }

А метод GetRealPathFromURI(); - вернет нам путь, который можно забиндить к ImageView

private string GetRealPathFromURI(Android.Net.Uri contentURI)
    {
        ICursor cursor = ContentResolver.Query(contentURI , null , null , null , null);
        cursor.MoveToFirst();
        string path = cursor.GetString(cursor.GetColumnIndex(MediaStore.Files.FileColumns.Data));
        cursor.Close();
        return path;
    }
READ ALSO
WPF и присваивание значения из кода

WPF и присваивание значения из кода

Например есть стиль в XAML:

194
Binding static observablecollection<int>

Binding static observablecollection<int>

Доброго времени суток!

223
Доступ к переопределенным методам

Доступ к переопределенным методам

Есть задача «OverloadResolutionOverride» (Задача):

213
Сборки нейтральные к домену

Сборки нейтральные к домену

Что это за зверь, как это сделать и когда этот хинт лучше использовать?

175