2016-07-19 1 views
1

Я использую RecyclerView, а элементы Recycler - это привязка данных с использованием MvvmCross. Каждый объект databound содержит imageurl, который я пытаюсь загрузить, используя библиотеку изображений Picasso. Моя первая идея состояла в том, чтобы вызвать Пикассо в ValueConverter. Чтобы использовать Picasso, мне нужен объект контекста, и я не уверен, что можно передать файл данных ImageView в качестве параметра в конвертер. Вот код ...Правильный способ обработки кэширования изображений, например. Picasso с MvvmCross

public class MyImageConverter : IMvxValueConverter 
{ 
    protected override object Convert(object value, object parameter) 
    {  
     var imageUrl = (string)value; 
     // How to optain context or direct access to imageView? 
     var imageView = new ImageView(context); 
     Picasso.With(context).Load(imageUrl).Into(imageView); 
     var bitmap = ((BitmapDrawable)imageView.Drawable).Bitmap; 
     return bitmap; 
    } 
} 

И фрагмент axml

<ImageView android:id="@+id/myImageView" 
app:MvxBind="Bitmap MyImageConverter(ImageUrl)" /> 

Это, вероятно, будет лучше, чтобы справиться с погрузочной асинхр Пикассо, но мне еще нужно будет получить доступ к пункту ImageView.

ответ

1

Вы должны создать настраиваемую привязку цели.

Смотрите, например: mvvmcross videoview URL binding

вещи были перемещены, так как я написал последний ответ, так вот ссылка на существующие привязки Android.

https://github.com/MvvmCross/MvvmCross/blob/4.0/MvvmCross/Binding/Droid/MvxAndroidBindingBuilder.cs

+0

Большое спасибо, я попробую это ... – doorman