#c# #gridview #xamarin.android
#c# #просмотр сетки #xamarin.android
Вопрос:
Я хочу создать представление сетки, в котором всего 8 столбцов с изображением и текстом. 1-й раз я попробовал использовать только динамические изображения и добился успеха, но после добавления текстового представления я получаю ошибки.
Мой адаптер для представления сетки выглядит следующим образом
public 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) //to set layout
{ // if it's not recycled, initialize some attributes
imageView = new ImageView(context);
imageView.LayoutParameters = new GridView.LayoutParams(85, 85);
imageView.SetScaleType(ImageView.ScaleType.CenterCrop);
imageView.SetPadding(8, 8, 8, 8);
}
else
{
imageView = (ImageView)convertView;
}
imageView.SetImageResource(thumbIds[position]);
return imageView;
}
// references to our images
int[] thumbIds = {
Resource.Drawable.rsz_logo, Resource.Drawable.rsz_logo, //my image
Resource.Drawable.rsz_logo, Resource.Drawable.rsz_logo,
Resource.Drawable.rsz_logo, Resource.Drawable.rsz_logo,
Resource.Drawable.rsz_logo, Resource.Drawable.rsz_logo
};
}
Мой код здесь, и это только сгенерирует изображение без текста.
Ответ №1:
вы могли бы настроить свой itemlayout в axml с помощью TextView
и ImageView
вот так :
создайте layout_item.axml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity = "center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@ id/imageView" />
<TextView
android:id="@ id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
/>
</LinearLayout>
затем в методе getView вашего адаптера :
public override View GetView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
TextView textView;
if (convertView == null)
{
convertView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.layout_item, null);
imageView = convertView.FindViewById<ImageView>(Resource.Id.imageView);
textView = convertView.FindViewById<TextView>(Resource.Id.textView);
}
//imageView.SetImageResource;
//textView.Text;
return convertView;
}