Xamarin 如何使用webservices和json在imageview上显示图像
我正在使用web服务在imageview中显示图像。但web服务映像以SYSTEM.BYTE[]格式显示。那么如何在xamarin android应用程序中在imageview中转换或显示图像呢 Webservice.asmx:Xamarin 如何使用webservices和json在imageview上显示图像,xamarin,Xamarin,我正在使用web服务在imageview中显示图像。但web服务映像以SYSTEM.BYTE[]格式显示。那么如何在xamarin android应用程序中在imageview中转换或显示图像呢 Webservice.asmx: [WebMethod(MessageName = "BindHospName", Description = "Bind Hospital Name Control")] [ScriptMethod(ResponseFormat = ResponseFormat
[WebMethod(MessageName = "BindHospName", Description = "Bind Hospital Name Control")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
[System.Xml.Serialization.XmlInclude(typeof(GetHospName))]
public string BindHosp(decimal SpecID)
{
JavaScriptSerializer objJss = new JavaScriptSerializer();
List<GetHospName> HospName = new List<GetHospName>();
try
{
ConnectionString();
cmd = new SqlCommand("select b.HID,b.HospName,b.Logo from HospitalRegBasic b inner join HospitalRegClinical c on b.HID=c.HID " +
"where b.EmailActivationCode <> '' and b.EmailActivationStatus = 1 and b.Status = 1 and c.SPEC_ID = @SpecID ", conn);
cmd.Parameters.AddWithValue("@SpecID", SpecID);
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
var getHosp = new GetHospName
{
HospID = dr["HID"].ToString(),
HospName = dr["HospName"].ToString(),
HospLogo = dr["Logo"].ToString()
};
HospName.Add(getHosp);
}
}
dr.Close();
cmd.Dispose();
conn.Close();
}
catch (Exception)
{
throw;
}
return objJss.Serialize(HospName);
}
[WebMethod(MessageName=“BindHospName”,Description=“绑定医院名称控制”)]
[ScriptMethod(ResponseFormat=ResponseFormat.Json,UseHttpGet=true)]
[System.Xml.Serialization.xmlclude(typeof(GetHospName))]
公共字符串BindHosp(十进制SpecID)
{
JavaScriptSerializer objJss=新的JavaScriptSerializer();
List HospName=新列表();
尝试
{
连接字符串();
cmd=new-SqlCommand(“在b.HID=c.HID上从HospitalRegBasic b内部连接HospitalRegClinical上选择b.HID、b.HospName、b.Logo”+
“其中b.EmailActivationCode''和b.EmailActivationStatus=1,b.Status=1,c.SPEC_ID=@SpecID”,康涅狄格州);
cmd.Parameters.AddWithValue(“@SpecID”,SpecID);
dr=cmd.ExecuteReader();
如果(哈斯罗博士)
{
while(dr.Read())
{
var getHosp=new GetHospName
{
HospID=dr[“HID”].ToString(),
HospName=dr[“HospName”].ToString(),
HospLogo=dr[“Logo”].ToString()
};
HospName.Add(getHosp);
}
}
Close博士();
cmd.Dispose();
康涅狄格州关闭();
}
捕获(例外)
{
投掷;
}
返回objJss.Serialize(HospName);
}
Class.cs:
namespace HSAPP
{
class ContListViewHospNameClass : BaseAdapter<GetHospNames>
{
List<GetHospNames> objList;
Activity objActivity;
public ContListViewHospNameClass (Activity objMyAct, List<GetHospNames> objMyList) : base()
{
this.objActivity = objMyAct;
this.objList = objMyList;
}
public override GetHospNames this[int position]
{
get
{
return objList[position];
}
}
public override int Count
{
get
{
return objList.Count;
}
}
public override long GetItemId(int position)
{
return position;
}
public static Bitmap bytesToBitmap(byte[] imageBytes)
{
Bitmap bitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
return bitmap;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = objList[position];
if (convertView == null)
{
convertView = objActivity.LayoutInflater.Inflate(Resource.Layout.ContListViewHospName, null);
}
convertView.FindViewById<TextView>(Resource.Id.tvHospID).Text = item.HospID;
convertView.FindViewById<TextView>(Resource.Id.tvHospName).Text = item.HospName;
byte[] img =item.HospLogo;
Bitmap bitmap = BitmapFactory.DecodeByteArray(img, 0, img.Length);
convertView.FindViewById<ImageView>(Resource.Id.imgLogo).SetImageBitmap(bitmap);
return convertView;
}
}
}
namespace-HSAPP
{
类ContListViewHospNameClass:BaseAdapter
{
列表对象列表;
活动客观性;
public ContListViewHospNameClass(活动objMyAct,列表objMyList):base()
{
this.objActivity=objMyAct;
this.objList=objMyList;
}
public override GetHospNames此[int position]
{
得到
{
返回对象列表[位置];
}
}
公共覆盖整数计数
{
得到
{
返回objList.Count;
}
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共静态位图bytesToBitmap(字节[]图像字节)
{
位图位图=BitmapFactory.DecodeByteArray(imageBytes,0,imageBytes.Length);
返回位图;
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
var项目=对象列表[位置];
if(convertView==null)
{
convertView=objActivity.LayoutInflater.Inflate(Resource.Layout.ContListViewHospName,null);
}
convertView.findviewbyd(Resource.Id.tvospid).Text=item.HospID;
convertView.FindViewById(Resource.Id.tvHospName).Text=item.HospName;
字节[]img=item.HospLogo;
位图位图=位图工厂.DecodeByteArray(img,0,img.Length);
convertView.findviewbyd(Resource.Id.imgLogo).SetImageBitmap(位图);
返回视图;
}
}
}
这是JSON代码:
private void BindControl_BindHospCompleted(object sender, BindControl.BindHospCompletedEventArgs e)
{
jsonValue = e.Result.ToString();
if (jsonValue == null)
{
Toast.MakeText(this, "No Data For Bind", ToastLength.Long).Show();
return;
}
try
{
JArrayValue = JArray.Parse(jsonValue);
list = new List<GetHospNames>();
int count = 0;
while (count < JArrayValue.Count)
{
GetHospNames getHospName = new GetHospNames(JArrayValue[count]["HospID"].ToString(), JArrayValue[count]["HospName"].ToString(),JArrayValue[count]["Logo"]);
list.Add(getHospName);
count++;
}
listView.Adapter = new ContListViewHospNameClass(this, list);
}
catch (Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Long).Show();
}
}
private void BindControl\u bindhospccompleted(对象发送方,BindControl.bindhospccompletedeventargs e)
{
jsonValue=e.Result.ToString();
if(jsonValue==null)
{
Toast.MakeText(这是“没有绑定数据”,ToastLength.Long).Show();
返回;
}
尝试
{
JArrayValue=JArray.Parse(jsonValue);
列表=新列表();
整数计数=0;
while(count
就这样。如果这不起作用,则字节数组可能不是有效的映像
public static bool IsValidImage(byte[] bytes)
{
try {
using(MemoryStream ms = new MemoryStream(bytes))
Image.FromStream(ms);
}
catch (ArgumentException) {
return false;
}
return true;
}
public static bool IsValidImage(byte[] bytes)
{
try {
using(MemoryStream ms = new MemoryStream(bytes))
Image.FromStream(ms);
}
catch (ArgumentException) {
return false;
}
return true;
}