Xamarin 如何在2列GridView中显示包含文本的图像
如何用文本显示图像(如名称、价格等) 下面的代码仅显示没有文本的图像 ---用户界面:Xamarin 如何在2列GridView中显示包含文本的图像,xamarin,xamarin.android,Xamarin,Xamarin.android,如何用文本显示图像(如名称、价格等) 下面的代码仅显示没有文本的图像 ---用户界面: 您可以在适配器的GetView方法中膨胀GridView的单元格,这样您就可以简单地用xml设计项目的模板 例如: GridView的代码隐藏: 公共ObservableCollection项=新ObservableCollection(); 公共MyGridViewAdapter; 创建时受保护的覆盖无效(捆绑包) { base.OnCreate(bundle); SetContentView(Resour
您可以在适配器的
GetView
方法中膨胀GridView
的单元格,这样您就可以简单地用xml设计项目的模板
例如:
GridView的代码隐藏:
公共ObservableCollection项=新ObservableCollection();
公共MyGridViewAdapter;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
//在此处添加您的项目。
对于(int i=0;i<50;i++)
{
添加(新的MyItemModel{ImageSource=Resource.Drawable.Pika,Name=“Name”+i});
}
adapter=新的MyGridViewAdapter(此,项);
GridView gv=FindViewById(Resource.Id.GridView);
gv.适配器=适配器;
}
MyItemModel用于图像资源和该图像的名称,如下所示:
公共类MyItemModel
{
公共字符串名称{get;set;}
公共int ImageSource{get;set;}
}
而MyGridViewAdapter
是这样的:
公共类MyGridViewAdapter:BaseAdapter
{
私人可观测收集项目;
私人活动语境;
公共MyGridViewAdapter(活动上下文、ObservableCollection项)
{
这个项目=项目;
this.context=上下文;
}
公共覆盖MyItemModel此[int位置]
{
得到
{
退货项目[位置];
}
}
公共覆盖整数计数
{
得到
{
返回项目。计数;
}
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
视图=转换视图;
如果(视图==null)
{
视图=context.LayoutInflater.Inflate(Resource.Layout.MyGridViewCell,null);
}
var image=view.findviewbyd(Resource.Id.image);
image.SetImageResource(项[位置].ImageSource);
var name=view.findviewbyd(Resource.Id.name);
name.Text=项目[位置].name;
返回视图;
}
}
最后,MyGridViewCell
的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="230dp"
android:numColumns="2"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:background="#ffffff"
android:stretchMode="columnWidth"
android:gravity="center" />
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace ModSpforce
{
class ImageAdapter : BaseAdapter
{
Context context;
public ImageAdapter(Context c)
{
context = c;
}
public override int Count
{
get { return thumbIds.Length; }
}
public override Java.Lang.Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public override View GetView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if (convertView == null)
{ // if it's not recycled, initialize some attributes
imageView = new ImageView(context);
imageView.LayoutParameters = new GridView.LayoutParams(200, 200);
imageView.SetScaleType(ImageView.ScaleType.CenterCrop);
imageView.SetPadding(3, 3, 3, 3);
}
else
{
imageView = (ImageView)convertView;
}
imageView.SetImageResource(thumbIds[position]);
return imageView;
}
// references to our images
int[] thumbIds = {
Resource.Drawable.sample_2, Resource.Drawable.sample_3,
Resource.Drawable.sample_4, Resource.Drawable.sample_5,
Resource.Drawable.sample_6, Resource.Drawable.sample_7,
Resource.Drawable.sample_0, Resource.Drawable.sample_1,
Resource.Drawable.sample_2, Resource.Drawable.sample_3,
Resource.Drawable.sample_4, Resource.Drawable.sample_5,
Resource.Drawable.sample_6, Resource.Drawable.sample_7,
Resource.Drawable.sample_0, Resource.Drawable.sample_1,
Resource.Drawable.sample_2, Resource.Drawable.sample_3,
Resource.Drawable.sample_4, Resource.Drawable.sample_5,
Resource.Drawable.sample_6, Resource.Drawable.sample_7
};
}
}