Search code examples
androidjarxamarin.androiduniversal-image-loader

Monodroid with Android-Universal-Image-Loader


I'm trying to add this Android library (https://github.com/nostra13/Android-Universal-Image-Loader) in my monodroid project. In Visual Studio 2010 I've created a Java Bindings Library project in which I've added the jar file of that library.

The thing is that when I build my project I get some errors :

'Com.Nostra13.Universalimageloader.Cache.Memory.Impl.LRULimitedMemoryCache.RemoveNext()': return type must be 'Java.Lang.Object' to match overridden member 'Com.Nostra13.Universalimageloader.Cache.Memory.LimitedMemoryCache.RemoveNext()'

on this code that the build auto-generated

    static IntPtr id_removeNext;
    [Register ("removeNext", "()Landroid/graphics/Bitmap;", "GetRemoveNextHandler")]
    protected override global::Android.Graphics.Bitmap RemoveNext ()
    {
        if (id_removeNext == IntPtr.Zero)
            id_removeNext = JNIEnv.GetMethodID (class_ref, "removeNext", "()Landroid/graphics/Bitmap;");

        if (GetType () == ThresholdType)
            return Java.Lang.Object.GetObject<global::Android.Graphics.Bitmap> (JNIEnv.CallObjectMethod  (Handle, id_removeNext), JniHandleOwnership.TransferLocalRef);
        else
            return Java.Lang.Object.GetObject<global::Android.Graphics.Bitmap> (JNIEnv.CallNonvirtualObjectMethod  (Handle, ThresholdClass, id_removeNext), JniHandleOwnership.TransferLocalRef);
    }   

And also this error

'Com.Nostra13.Universalimageloader.Core.Download.URLConnectionImageDownloader' does not implement inherited abstract member 'Com.Nostra13.Universalimageloader.Core.Download.ImageDownloader.GetStreamFromNetwork(Java.Net.URI)'    

on this line of code

 public partial class URLConnectionImageDownloader : global::Com.Nostra13.Universalimageloader.Core.Download.ImageDownloader

Does anyone have any ideas how to fix this problem? Or has anyone successfully imported this java library in their Monodroid application?

Any help is much appreciated. Thanks


Solution

  • Add this to your Transforms\Metadata.xml file

    <attr path=”/api/package[@name=’com.nostra13.universalimageloader.cache.memory.impl’]
    /class[@name=’LRULimitedMemoryCache’]
    /method[@name=’removeNext’]” name=”managedReturn”>Java.Lang.Object</attr>
    

    For the second error you can add a partial class definition that implements the method GetStreamFromNetwork(Java.Net.URI)

    namespace Com.Nostra13.Universalimageloader.Core.Download {
       partial class URLConnectionImageDownloader{
           public override InputStream GetStreamFromNetwork(Java.Net.URI) {
               return null;
           }
       }
    }
    

    Please read this tutorial for more info