J'ai un panier avec ListView et je montre les totaux sur le pied de page ListView. j'ai ajouté le point de vue de pied à l'listView en utilisant,android Mise à jour du pied de liste ListView
GetShoppingCartItems - obtient les éléments courants dans le panier
fillBasketSummary créer le pied de page
DoRemoveCartItem - de retirer l'article du panier
private Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
fillBasketSummary() ;
dialog.dismiss() ;
}
} ;
private void GetShoppingCartItems()
{
try {
WsFpUser wsfp = myapp.getWsFP_User() ;
products = wsfp.GetBasketOrderItems(loggedInUser.ID);
} catch (Exception e) {
}
handler.sendEmptyMessage(0);
}
private void fillBasketSummary()
{
try {
LayoutInflater inflater = this.getLayoutInflater();
View footerView = inflater.inflate(R.layout.basket_footer, null);
ListView lst = (ListView) findViewById(R.id.basket_listItems);
lst.addFooterView(footerView);
if (adapter != null)
{
adapter.products.clear() ;
adapter.notifyDataSetChanged() ;
}
if (products != null)
{
lstProducts = (ListView) findViewById(R.id.basket_listItems);
adapter = new ProductsAdapter(getApplicationContext(), products);
lstProducts.setAdapter(adapter);
}
else
{
// show message "cart empty"
}
float subTotal = 0.0f ;
DecimalFormat df = new DecimalFormat("#0.00");
TextView txtSubTotal = (TextView) footerView.findViewById(R.id.basket_txtSubTotal);
if (products != null)
{
for (int i =0; i< products.size() ; i ++)
{
float price = Float.parseFloat(product.itemPrice) ;
float discount = Float.parseFloat(product.itemDiscount) ;
int quantity = Integer.parseInt(product.quantity);
subTotal = subTotal + (price - discount) * quantity ;
}
txtSubTotal.setText("£ " + df.format(subTotal));
}
} catch (Exception e)
{
Log.e("err",e.toString());
e.printStackTrace();
}
}
public void DoRemoveCartItem(final int itemIndex)
{
dialog = ProgressDialog.show(this, "",
"Loading. Please wait...", true);
Thread t = new Thread( new Runnable() {
public void run()
{
boolean bRemove = false;
WsFpUser wsfpUser = myapp.getWsFP_User() ;
CardItem cardItem = products.get(itemIndex);
try
{
bRemove = wsfpUser.RemoveOrderItem(cardItem.orderID);
} catch (Exception e) {
e.printStackTrace();
}
if (bRemove)
{
GetShoppingCartItems();
}
else
{
// error
}
}
}) ;
t.start() ;
}
Pour supprimer des éléments, j'appelle DoRemoveCartItem() puis appelle "GetShoppingCartItems()" pour obtenir la liste courante des éléments, puis reconstruit la liste
Chaque fois que l'utilisateur supprime un élément de la liste, je recalcule les totaux et effectue le processus ci-dessus pour ajouter à nouveau le pied de page.
Le problème est que les valeurs de pied de page ne sont pas mises à jour lorsque des éléments sont supprimés de la liste.
qu'est-ce que j'ai fait de mal?
Où est-ce que vous mettez actuellement à jour votre pied de page? – Reno
Ma conjecture est que vous ne mettez pas à jour la vue de pied de page quand la vue de liste est mise à jour. – AedonEtLIRA
lorsque l'article est retiré du panier. J'appelle le service Web pour obtenir les données actuelles pour le ListView. Après les données reçues, je recharger le listview modifié le code pour montrer ce qui a été fait ... – Janaka