C# Xamarin Android图像url数组进入gridview
我只想将resource.drawable.image更改为URL,但我不知道如何才能做到这一点。我尝试使用位图方法,但我不知道如何使用此方法使其成为数组。这样做的目的是我想从数据库中获取数据,并将其存储到我的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值
顺便说一下,我已经从数据库中存储了列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();
}
最后
{
骗局