C# Xamarin Android图像url数组进入gridview

C# Xamarin Android图像url数组进入gridview,c#,android,mysql,visual-studio,xamarin,C#,Android,Mysql,Visual Studio,Xamarin,我只想将resource.drawable.image更改为URL,但我不知道如何才能做到这一点。我尝试使用位图方法,但我不知道如何使用此方法使其成为数组。这样做的目的是我想从数据库中获取数据,并将其存储到我的列表或数组中,以便输出类似。它在resource.drawable.image中运行良好,但我想转换为url值 顺便说一下,我已经从数据库中存储了列ID。我还尝试将数据库中的image_link列存储到while循环中,并将其调用到列表中,但我发现了错误。请参阅下面-->Fragment1

我只想将resource.drawable.image更改为URL,但我不知道如何才能做到这一点。我尝试使用位图方法,但我不知道如何使用此方法使其成为数组。这样做的目的是我想从数据库中获取数据,并将其存储到我的
列表
或数组中,以便输出类似。它在resource.drawable.image中运行良好,但我想转换为url值

顺便说一下,我已经从数据库中存储了列ID。我还尝试将数据库中的image_link列存储到while循环中,并将其调用到列表中,但我发现了错误。请参阅下面-->Fragment1.cs中的我的代码 所有这些代码都在工作

fragment_layout.axml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <RelativeLayout
    android:padding="16dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <GridView
      android:id="@+id/grid_view_image_text"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:columnWidth="110dp"
      android:gravity="center"
      android:numColumns="auto_fit"/>
  </RelativeLayout>
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:layout_gravity="center" />
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginTop="15dp"
    android:id="@+id/imageViewGrid"/>
  <TextView
    android:layout_marginTop="5dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textViewGrid"/>
</LinearLayout>


gridview_layout.axml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <RelativeLayout
    android:padding="16dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <GridView
      android:id="@+id/grid_view_image_text"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:columnWidth="110dp"
      android:gravity="center"
      android:numColumns="auto_fit"/>
  </RelativeLayout>
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:layout_gravity="center" />
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginTop="15dp"
    android:id="@+id/imageViewGrid"/>
  <TextView
    android:layout_marginTop="5dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textViewGrid"/>
</LinearLayout>


CustomGridViewAdapter.cs:

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;
using Java.Lang;

namespace testing_code
{
    public class CustomGridViewAdapter : BaseAdapter
    {
        private Context context;
        private string[] gridViewString;
        private int[] gridViewImage;
        public CustomGridViewAdapter(Context context, string[] gridViewstr, int[] gridViewImage)
        {
            this.context = context;
            gridViewString = gridViewstr;
            this.gridViewImage = gridViewImage;
        }
        public override int Count
        {
            get
            {
                return gridViewString.Length;
            }
        }

        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;
            LayoutInflater inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
            if(convertView == null)
            {
                view = new View(context);
                view = inflater.Inflate(Resource.Layout.gridview_layout, null);
                TextView txtview = view.FindViewById<TextView>(Resource.Id.textViewGrid);
                ImageView imgview = view.FindViewById<ImageView>(Resource.Id.imageViewGrid);

                txtview.Text = gridViewString[position];
                imgview.SetImageResource(gridViewImage[position]);
            }
            else
            {
                view = (View)convertView;
            }
            return view;
        }

        //private Bitmap GetImageBitmapFromUrl(string url)
        //{
        //    Bitmap imageBitmap = null;

        //    using (var webClient = new WebClient())
        //    {
        //        var imageBytes = webClient.DownloadData(url);
        //        if (imageBytes != null && imageBytes.Length > 0)
        //        {
        //            imageBitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
        //        }
        //    }

        //    return imageBitmap;
        //}
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Runtime;
使用Android.Views;
使用Android.Widget;
使用Java.Lang;
命名空间测试代码
{
公共类CustomGridViewAdapter:BaseAdapter
{
私人语境;
私有字符串[]gridViewString;
私有int[]gridViewImage;
公共CustomGridViewAdapter(上下文上下文,字符串[]gridViewstr,int[]gridViewImage)
{
this.context=上下文;
gridViewString=gridViewstr;
this.gridViewImage=gridViewImage;
}
公共覆盖整数计数
{
得到
{
返回gridViewString.Length;
}
}
public override Java.Lang.Object GetItem(int位置)
{
返回null;
}
公共覆盖长GetItemId(int位置)
{
返回0;
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
视图;
LayoutInflater充气器=(LayoutInflater)context.GetSystemService(context.LayoutInflaterService);
if(convertView==null)
{
视图=新视图(上下文);
视图=充气机。充气(Resource.Layout.gridview\u Layout,null);
TextView txtview=view.findviewbyd(Resource.Id.textViewGrid);
ImageView imgview=view.FindViewById(Resource.Id.imageViewGrid);
Text=gridViewString[position];
imgview.SetImageResource(gridViewImage[position]);
}
其他的
{
视图=(视图)转换视图;
}
返回视图;
}
//私有位图GetImageBitmapFromUrl(字符串url)
//{
//位图imageBitmap=null;
//使用(var webClient=new webClient())
//    {
//var imageBytes=webClient.DownloadData(url);
//if(imageBytes!=null&&imageBytes.Length>0)
//        {
//imageBitmap=BitmapFactory.DecodeByteArray(imageBytes,0,imageBytes.Length);
//        }
//    }
//返回图像位图;
//}
}
}

片段1.cs:

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.Util;
using Android.Views;
using Android.Widget;
using SupportFragment = Android.Support.V4.App.Fragment;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Support.V4.Widget;
using Android.Support.V4.App;
using MySql.Data.MySqlClient;
using System.Data;

namespace testing_code
{
    public class Fragment1 : SupportFragment
    {
        MySqlConnection conn = new MySqlConnection();

        string query = "server=localhost;port=3306;database=dbsample;user id=root;password=123";

        GridView gridview;

        //string[] gridviewstring = {
        //        "location", "sound", "note"
        //};

        //int[] imgview =
        //{
        //    Resource.Drawable.ic_dashboard, Resource.Drawable.ic_headset, Resource.Drawable.ic_dashboard
        //};

        List<string> gridviewstring = new List<string>();
        List<int> imgview = new List<int>();


        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your fragment here
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Use this to return your custom view for this Fragment
            // return inflater.Inflate(Resource.Layout.YourFragment, container, false);

            View view = inflater.Inflate(Resource.Layout.fragment_layout, container, false);


            conn.ConnectionString = query;

            // 
            MySqlCommand cmd = new MySqlCommand("Select * from wp_kdskli23jkposts where ID in (1,2,4)", conn);

            try
            {
                conn.Open();
                MySqlDataReader reader = cmd.ExecuteReader();

                //Read, get and loop the data value from the database
                while (reader.Read())
                {
                    string asd = reader["ID"].ToString();

                    gridviewstring.Add(asd);
                }
            }
            catch(MySqlException ex)
            {
                Android.Support.V7.App.AlertDialog.Builder except = new Android.Support.V7.App.AlertDialog.Builder(Activity);
                except.SetTitle("Please report this to our website(error server timeout)");
                except.SetMessage(ex.ToString());
                except.SetPositiveButton("Ok", (senderAlert, args) =>
                {
                    except.Dispose();
                });
                except.Show();
            }
            finally
            {
                conn.Close();
            }
            //gridviewstring.Add("location");
            //gridviewstring.Add("music");
            //gridviewstring.Add("book");



            imgview.Add(Resource.Drawable.ic_dashboard);
            imgview.Add(Resource.Drawable.ic_headset);
            imgview.Add(Resource.Drawable.ic_dashboard);

            string[] GridViewStringArray = gridviewstring.ToArray();
            int[] GridImgViewArray = imgview.ToArray();

            CustomGridViewAdapter adapter = new CustomGridViewAdapter(Activity, GridViewStringArray, GridImgViewArray);
            gridview = view.FindViewById<GridView>(Resource.Id.grid_view_image_text);
            gridview.Adapter = adapter;
            return view;
        }

    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Runtime;
使用Android.Util;
使用Android.Views;
使用Android.Widget;
使用SupportFragment=Android.Support.V4.App.Fragment;
使用Android.Support.Design.Widget;
使用Android.Support.V7.App;
使用Android.Support.V4.Widget;
使用Android.Support.V4.App;
使用MySql.Data.MySqlClient;
使用系统数据;
命名空间测试代码
{
公共类片段1:SupportFragment
{
MySqlConnection conn=新的MySqlConnection();
string query=“server=localhost;port=3306;database=dbsample;user id=root;password=123”;
GridView;
//字符串[]gridviewstring={
//“位置”、“声音”、“音符”
//};
//int[]imgview=
//{
//Resource.Drawable.ic_仪表板,Resource.Drawable.ic_耳机,Resource.Drawable.ic_仪表板
//};
List gridviewstring=新建列表();
List imgview=新列表();
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在这里创建你的片段
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//使用此选项可返回此片段的自定义视图
//返回充气器。充气(Resource.Layout.YourFragment,container,false);
视图=充气机。充气(Resource.Layout.fragment\u布局,容器,false);
conn.ConnectionString=查询;
// 
MySqlCommand cmd=newmysqlcommand(“从wp_kdskli23jkposts中选择*,其中ID位于(1,2,4)”,conn;
尝试
{
conn.Open();
MySqlDataReader=cmd.ExecuteReader();
//从数据库读取、获取并循环数据值
while(reader.Read())
{
字符串asd=reader[“ID”].ToString();
gridviewstring.Add(asd);
}
}
捕获(MySqlException-ex)
{
Android.Support.V7.App.AlertDialog.Builder除外=新的Android.Support.V7.App.AlertDialog.Builder(活动);
除了.SetTitle(“请向我们的网站报告此情况(错误服务器超时)”);
除了.SetMessage(例如ToString());
除了.SetPositiveButton(“确定”之外,(senderAlert,args)=>
{
除.Dispose();
});
除了.Show();
}
最后
{
骗局