2017-03-18 10 views
1

アイテムのIDを取得して別のアクティビティに送信する必要があります アイテムの情報をJSON から得ることができます感謝! は、ここに私のコード>>>あるXamarin android:カスタムリストビューでクリックしたアイテムから情報を取得する方法

クラス

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; 
     } 
    } 

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

    } 

答えて

0

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; 
    } 
} 

そしてItemClickEventArgsで、あなたがポジションを得た後、あなたのTableItemmにキャスト:

var tableItem = listView.GetItemAtPosition(e.Position).Cast<TableItemm>(); 

今、あなたはすべての要素のプロパティを読み取ることができます。

https://msdn.microsoft.com/en-us/library/bb311042.aspx

関連する問題