Как добавить текст и изображение в виде сетки в Xamarin Android - PullRequest
1 голос
/ 15 марта 2019

Я хочу создать вид сетки, где всего 8 столбцов с изображением и текстом.Во-первых, я пытался использовать только динамические изображения, и все прошло успешно, но после добавления текстового представления я получаю ошибки.

Мой адаптер для вида сетки выглядит так:

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

enter image description here Мой код здесь, и это только сгенерирует изображение без текста.

1 Ответ

1 голос
/ 15 марта 2019

вы можете настроить свой 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;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...