Как добавить текст и изображение в таблицу в Xamarin Android

#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;

    }