Android 在GridView中显示位图图像
在Xamarin中,我有一个Android 在GridView中显示位图图像,android,xamarin,android-gridview,android-adapter,android-bitmap,Android,Xamarin,Android Gridview,Android Adapter,Android Bitmap,在Xamarin中,我有一个活动,它有一个网格视图和一个图像网址列表。将从这些网址检索位图对象列表,然后将其显示在网格视图中 这是我的main活动code: public class MainActivity : Activity { GridView gridView; List<String> bitmapUris; List<Bitmap> gridViewItems; protected override void OnCreat
活动
,它有一个网格视图
和一个图像网址列表。将从这些网址检索位图
对象列表,然后将其显示在网格视图
中
这是我的main活动
code:
public class MainActivity : Activity
{
GridView gridView;
List<String> bitmapUris;
List<Bitmap> gridViewItems;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
gridView = FindViewById<GridView>(Resource.Id.gridView);
bitmapUris = new List<string> ();
bitmapUris.Add ("http://images4.fanpop.com/image/photos/15000000/My-Sample-Pictures-lexi-and-sophie-15061826-1024-768.jpg");
bitmapUris.Add ("http://www.cameraegg.org/wp-content/uploads/2013/08/AF-S-DX-NIKKOR-18-140mm-f-3.5-5.6G-ED-VR-sample-images-1.jpg");
bitmapUris.Add ("http://upload.wikimedia.org/wikipedia/en/5/5d/The_Samples-Outpost.jpg");
bitmapUris.Add ("http://www.1800postcards.com/images/samples/sample_kits2.jpg");
gridViewItems = GetBitmapImages (bitmapUris);
gridView.Adapter = new GridViewAdapter (this, gridViewItems);
}
List<Bitmap> GetBitmapImages(List<String> bitmapUris)
{
List<Bitmap> images = new List<Bitmap> ();
Bitmap image;
foreach (var uri in bitmapUris)
{
image = GetImageBitmapFromUri (uri);
images.Add (image);
}
return images;
}
private Bitmap GetImageBitmapFromUri(string uri)
{
Bitmap imageBitmap = null;
using (var webClient = new WebClient())
{
var imageBytes = webClient.DownloadData(uri);
if (imageBytes != null && imageBytes.Length > 0)
{
imageBitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
}
}
return imageBitmap;
}
}
public class GridViewAdapter : BaseAdapter
{
Activity context;
List<Bitmap> gridViewtems;
public GridViewAdapter (Activity context, List<Bitmap> gridViewtems)
{
this.context = context;
this.gridViewtems = gridViewtems;
}
public override int Count {
get { return gridViewtems.Count; }
}
public override Java.Lang.Object GetItem (int position)
{
return null;
}
public override long GetItemId (int position)
{
return 0;
}
public override View GetView (int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
view = context.LayoutInflater.Inflate(Resource.Layout.GridViewItemWithImageAndText, null);
view.FindViewById<ImageView> (Resource.Id.image).SetImageBitmap (gridViewtems[position]);
view.FindViewById<TextView> (Resource.Id.text).Text = position.ToString();
return view;
}
}
当前,当应用程序加载时,屏幕变为空白,直到从web地址检索到位图
我的问题是:如何为GridView
项目显示带有占位符的活动
,并且在检索每个位图
时,填充相关的GridView
项目图像?
这是在main活动中完成的,还是在GridViewAdapter中完成的
提前感谢尝试使用通用图像加载器将图像从url显示到GridView
请参阅:
使用延迟加载,谢谢。如何将Universal Image Loader添加到我的Xamarin项目中?我看到下载文件夹中有很多.jar文件。你终于可以在右下角找到下载ZIP选项。当你下载这个文件时,你会在src文件夹和libs文件夹中的universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar中找到一些文件。你需要使用这个jar文件我有这个文件,我应该把它放在哪里才能使用Xamarin中的类?把这个文件放在你的libs文件夹里。我现在没有libs文件夹,我应该在哪里创建它?