У меня есть корзина с ListView, и я показываю итоги в нижнем колонтитуле ListView.я добавил нижний колонтитул в listView, используя
GetShoppingCartItems - получает текущие элементы в корзине
fillBasketSummary создать нижний колонтитул
DoRemoveCartItem - удалить элемент из корзины
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() ;
}
Чтобы удалить элементы, я вызываю DoRemoveCartItem (), затем вызываю «GetShoppingCartItems ()», чтобы получить текущий список элементов, затем он перестраивает список
Каждый раз, когда пользователь удаляет элемент из списка, я пересчитываюитоги и выполните описанный выше процесс, чтобы снова добавить нижний колонтитул.
Проблема в том, что значения нижнего колонтитула не обновляются при удалении элементов из списка.
что я сделал не так?