C# Xamarin android:如何从自定义列表视图中单击的项目中获取信息

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

我需要获取单击的项目的id以将其发送到其他活动 请注意,我从JSON获取项目的信息 任何帮助都将不胜感激! 这是我的代码>>>

班级

  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>();