C# Xamarin android:如何从自定义列表视图中单击的项目中获取信息
我需要获取单击的项目的id以将其发送到其他活动 请注意,我从JSON获取项目的信息 任何帮助都将不胜感激! 这是我的代码>>> 班级C# Xamarin android:如何从自定义列表视图中单击的项目中获取信息,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我需要获取单击的项目的id以将其发送到其他活动 请注意,我从JSON获取项目的信息 任何帮助都将不胜感激! 这是我的代码>>> 班级 public class TableItemm { public string discription; public string price; public int ImageResourceId; public TableItemm(string discription, stri
public class TableItemm
{
public string discription;
public string price;
public int ImageResourceId;
public TableItemm(string discription, string price, int ImageResourceId)
{
this.discription = discription;
this.price = price;
this.ImageResourceId = ImageResourceId;
}
}
适配器
public class THomeScreenAdapter : BaseAdapter<TableItemm>
{
List<TableItemm> items;
Activity context;
public THomeScreenAdapter(Activity context, List<TableItemm> items) : base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override TableItemm this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
View view = convertView; // re-use an existing view, if one is available
if (view == null) // otherwise create a new one
view = context.LayoutInflater.Inflate(Resource.Layout.item, null);
view.FindViewById<TextView>(Resource.Id.DText1).Text = item.discription ;
view.FindViewById<TextView>(Resource.Id.PText2).Text = item.price;
view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);
return view;
}
}
公共类ThomesScreenAdapter:BaseAdapter
{
清单项目;
活动语境;
公共ThomesScreenAdapter(活动上下文,列表项):base()
{
this.context=上下文;
这个项目=项目;
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共覆盖TableItemm此[int位置]
{
获取{返回项目[位置];}
}
公共覆盖整数计数
{
获取{return items.Count;}
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
var项目=项目[位置];
View=convertView;//如果现有视图可用,则重新使用该视图
if(view==null)//否则创建一个新的
视图=context.LayoutInflater.Inflate(Resource.Layout.item,null);
view.findviewbyd(Resource.Id.DText1).Text=item.description;
view.findviewbyd(Resource.Id.PText2).Text=item.price;
view.findviewbyd(Resource.Id.Image).SetImageResource(item.ImageResourceId);
返回视图;
}
}
OnListItemClick
public void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e )
{
var listView = sender as ListView;
// note that >>> List<TableItemm> L2MLIStt;
var t = L2MLIStt[e.Position];
//var t2 = L2MLIStt2[e.Position];
// var t3 = L2MLIStt3[e.Position];
var x = e.Position ;
Android.Widget.Toast.MakeText(this, x, Android.Widget.ToastLength.Long).Show();
// take the item ID & show it in product page
var intent = new Intent(this, typeof(product));
// intent.PutExtra("test", x);
//StartActivity(intent);
}
public void OnListItemClick(对象发送者,AdapterView.ItemClickEventArgs e)
{
var listView=发送方作为listView;
//注意>>>列出L2MLIStt;
var t=L2MLIStt[e.位置];
//var t2=L2列表t2[e.位置];
//var t3=L2mList3[e.位置];
var x=e.位置;
Android.Widget.Toast.MakeText(this,x,Android.Widget.ToastLength.Long).Show();
//获取项目ID并在产品页面中显示
var意向=新意向(此,类型为(产品));
//意图。额外(“测试”,x);
//星触觉(意向);
}
为Java.Lang.Object创建自定义扩展方法:
internal static class ObjectTypeHelper
{
public static T Cast<T>(this Java.Lang.Object obj) where T : class
{
var propertyInfo = obj.GetType().GetProperty("Instance");
return propertyInfo == null ? null : propertyInfo.GetValue(obj, null) as T;
}
}
现在可以读取元素的所有属性
var tableItem = listView.GetItemAtPosition(e.Position).Cast<TableItemm>();