Essayer de développer un système de commande d'articles dans Xamarin.Android. Pour afficher la liste des éléments, j'ai utilisé un listView avec adaptateur personnalisé avec le bouton Cart dans chaque ligne. Pouvez-vous me suggérer la technologie que je devrais utiliser ou comment puis-je stocker chaque article commandé dans une liste qui ira à l'activité de ma liste de panier? Voici mon articleListeAdapter class:Comment puis-je stocker chaque article commandé dans une liste de panier dans Xamarin.Android?
Merci!
namespace Test.Restaurant.Android.Adapters
{
public class ItemListAdapter : BaseAdapter
{
List mItems;
Activity context;
private OrderDetail _OrderDetails;
private List _OrderDetailsList;
public ItemListAdapter(Activity context, List<Item> items) : base()
{
this.context = context;
this.mItems = items;
}
public override long GetItemId(int position)
{
return position;
}
public override Item this[int position]
{
get { return mItems[position]; }
}
public override int Count
{
get { return mItems.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView ?? context.LayoutInflater.Inflate(Resource.Layout.ItemRowView, parent, false);
var viewHolder = view.Tag as ItemHolder;
var item = mItems[position];
Bitmap myImage = ImageHelper.Bytes2Bimap(item.Image);
// 03. List With Custom Row View
if (viewHolder == null)
{
viewHolder = new ItemHolder
{
itemNameTextView = view.FindViewById<TextView>(Resource.Id.itemNameTextView),
descriptionTextView = view.FindViewById<TextView>(Resource.Id.descriptionTextView),
itemImageView = view.FindViewById<ImageView>(Resource.Id.itemImageView),
priceTextView = view.FindViewById<TextView>(Resource.Id.priceTextView),
btnPlus = view.FindViewById<ImageView>(Resource.Id.btnPlus),
btnMinus = view.FindViewById<ImageView>(Resource.Id.btnMinus),
btnAddtoCart = view.FindViewById<ImageView>(Resource.Id.btnAddToCart),
txtQty = view.FindViewById<TextView>(Resource.Id.cart_product_quantity)
};
view.Tag = viewHolder;
}
else
{
viewHolder = view.Tag as ItemHolder;
}
viewHolder.itemNameTextView.Text = item.ItemName;
viewHolder.descriptionTextView.Text = item.ItemDescription;
viewHolder.priceTextView.Text = "$ " + 30;
viewHolder.itemImageView.SetImageBitmap(myImage);
if (!viewHolder.btnAddtoCart.HasOnClickListeners)
{
viewHolder.btnAddtoCart.Click += (sender, args) =>
{
_OrderDetails = new OrderDetail();
_OrderDetails.ItemId = item.ItemId;
_OrderDetails.Quantity = int.Parse(viewHolder.txtQty.Text);
_OrderDetails.UnitPriceInclTax = 0;
_OrderDetails.UnitPriceExclTax = 0;
_OrderDetails.DiscountAmountInclTax = 0;
_OrderDetails.DiscountAmountExclTax = 0;
_OrderDetails.PriceInclTax = 100;
_OrderDetails.PriceExclTax = 0;
** //What should I Do Here???**
**************************
**************************
};
}
return view;
}
private class ItemHolder : Java.Lang.Object
{
public TextView itemNameTextView { get; set; }
public TextView descriptionTextView { get; set; }
public TextView txtQty { get; set; }
public ImageView itemImageView { get; set; }
public ImageView btnPlus { get; set; }
public ImageView btnMinus { get; set; }
public ImageView btnAddtoCart { get; set; }
}
}
}
Bonjour Elvis Xia! Beaucoup de mercis de mon coeur! J'ai appliqué votre chemin. C'est bien! Mais il y a deux problèmes dans ma fin. Tout d'abord, j'ai utilisé fragment pour Tab (Category). S'il vous plaît voir l'image liée dans mon message! Donc, je dois passer le paramètre cartList dans la classe Every Fragment. Le problème est lorsque je clique sur un nouvel onglet pour commander un nouvel article, la liste de panier devient vide. ** Le deuxième problème est: ** Quelle technologie devrais-je utiliser pour passer ma cartList (orderDetails) à la nouvelle activité. En attente de votre précieuse réponse! Merci encore! – Russell
@Russell pour votre condition, je vous suggère d'utiliser Single Pattern pour CartList, s'il vous plaît vérifier ma mise à jour. –