diff options
author | Adrian Knight <adrianknight89@outlook.com> | 2016-11-27 14:17:24 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2017-02-22 11:30:19 +0000 |
commit | 31eada25bd1fe732c0970a276f1f4fc0324b02c1 (patch) | |
tree | cde2fbf769831beed9a963049def7334a646cb37 | |
parent | 4ba2f0999e581340dc4e577db56a9a4c8f670c4c (diff) | |
download | xamarin-forms-31eada25bd1fe732c0970a276f1f4fc0324b02c1.tar.gz xamarin-forms-31eada25bd1fe732c0970a276f1f4fc0324b02c1.tar.bz2 xamarin-forms-31eada25bd1fe732c0970a276f1f4fc0324b02c1.zip |
add support for view cells
3 files changed, 49 insertions, 27 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla47923.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla47923.cs index 2e21ba6f..23a6d73a 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla47923.cs +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla47923.cs @@ -1,4 +1,5 @@ -using Xamarin.Forms.CustomAttributes; +using System.Collections.Generic; +using Xamarin.Forms.CustomAttributes; using Xamarin.Forms.Internals; #if UITEST @@ -59,6 +60,24 @@ namespace Xamarin.Forms.Controls.Issues } } + public class CellViewPage : ContentPage + { + public CellViewPage() + { + var list = new List<int>(); + for (var i = 0; i < 50; i++) + list.Add(i); + + var listView = new ListView + { + ItemsSource = list, + ItemTemplate = new DataTemplate(() => new ImageCell { ImageSource = "cartman" }) + }; + + Content = listView; + } + } + public class LandingPage : ContentPage { public LandingPage() @@ -96,6 +115,14 @@ namespace Xamarin.Forms.Controls.Issues }; stackLayout.Children.Add(button3); + var button4 = new Button + { + Text = "Test cell views", + Command = new Command(() => { Navigation.PushAsync(new CellViewPage()); }), + HorizontalOptions = LayoutOptions.Center + }; + stackLayout.Children.Add(button4); + scrollView.Content = stackLayout; Content = scrollView; } diff --git a/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs b/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs index c4d10cc4..b14a585a 100644 --- a/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs +++ b/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs @@ -193,7 +193,6 @@ namespace Xamarin.Forms.Platform.Android _imageView.SetImageResource(global::Android.Resource.Color.Transparent); Bitmap bitmap = null; - IImageSourceHandler handler; if (source != null && (handler = Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null) @@ -211,9 +210,12 @@ namespace Xamarin.Forms.Platform.Android } } - _imageView.SetImageBitmap(bitmap); - if (bitmap != null) - bitmap.Dispose(); + if (bitmap == null && source is FileImageSource) + _imageView.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)source).File)); + else + _imageView.SetImageBitmap(bitmap); + + bitmap?.Dispose(); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs index a50c1814..fe91d588 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs @@ -68,10 +68,6 @@ namespace Xamarin.Forms.Platform.Android if (Device.IsInvokeRequired) throw new InvalidOperationException("Image Bitmap must not be updated from background thread"); - Bitmap bitmap = null; - - ImageSource source = Element.Source; - if (previous != null && Equals(previous.Source, Element.Source)) return; @@ -82,27 +78,22 @@ namespace Xamarin.Forms.Platform.Android Control.SetImageResource(global::Android.Resource.Color.Transparent); - if (source != null) + ImageSource source = Element.Source; + Bitmap bitmap = null; + IImageSourceHandler handler; + + if (source != null && (handler = Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null) { - IImageSourceHandler handler; - if ((handler = Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null) + try { - try - { - bitmap = await handler.LoadImageAsync(source, Context); - } - catch (TaskCanceledException) - { - } - catch (IOException ex) - { - Log.Warning("Xamarin.Forms.Platform.Android.ImageRenderer", "Error updating bitmap: {0}", ex); - } + bitmap = await handler.LoadImageAsync(source, Context); } - - if (bitmap == null && source is FileImageSource) + catch (TaskCanceledException) { - Control.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)Element.Source).File)); + } + catch (IOException ex) + { + Log.Warning("Xamarin.Forms.Platform.Android.ImageRenderer", "Error updating bitmap: {0}", ex); } } @@ -114,7 +105,9 @@ namespace Xamarin.Forms.Platform.Android if (!_isDisposed) { - if (bitmap != null) + if (bitmap == null && source is FileImageSource) + Control.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)source).File)); + else Control.SetImageBitmap(bitmap); bitmap?.Dispose(); |