gpt4 book ai didi

java - 使用notifyDataSetChanged方法删除项目后如何刷新listView?

转载 作者:行者123 更新时间:2023-12-01 11:38:16 33 4
gpt4 key购买 nike

我有一个从现有数据库填充的 listView ,对于显示的每个项目,我还有一个删除按钮,以便我可以删除它,当我这样做时,我想要屏幕刷新并显示更新后的 listView 以及已删除的项目。

我知道我应该使用 notifyDataSetChanged 方法,但它并没有达到目的。我也尝试过上网解决这个问题,但没有任何效果,所以我在下面发布了一些代码,如果有人可以提供帮助,那就太好了。

CartItemsAdapter.java

package ankitkaushal.app.healthysizing;

import java.util.ArrayList;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public final class CartItemsAdapter extends ArrayAdapter<Item> implements View.OnClickListener {

public CartItemsAdapter(Context context, ArrayList<Item> shirtItems) {
super(context, 0, shirtItems);
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

// Get the data item for this position
Item item = getItem(position);

// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.cart_layout, parent, false);
}

// Lookup view for data population
TextView brand = (TextView) convertView.findViewById(R.id.txt_cart_brand);
TextView price = (TextView) convertView.findViewById(R.id.txt_cart_price);
TextView store = (TextView) convertView.findViewById(R.id.txt_cart_store);
TextView size = (TextView) convertView.findViewById(R.id.txt_cart_size);
TextView description = (TextView) convertView.findViewById(R.id.txt_cart_description);
ImageView shirtsImage = (ImageView) convertView.findViewById(R.id.image_view_cart);
Button deleteFromCartButton = (Button) convertView.findViewById(R.id.deleteItemButton);

// Populate the data into the template view using the data object
brand.setText("Brand:" + " " + item.getBrand());
price.setText("Price:" + " $" + item.getPrice());
store.setText("Store:" + " " + item.getStore());
size.setText("Size:" + " " + item.getSize());
description.setText("Description:" + " " + item.getDescription());

Context context = parent.getContext();

try { // Find the image name from database ID column and link that up with the name of image in drawable folder
String itemName = item.getID();
String uri = "@drawable/"+itemName;
int imageResource = context.getResources().getIdentifier(uri, null, context.getApplicationContext().getPackageName());
Drawable drawable = context.getResources().getDrawable(imageResource);
shirtsImage.setImageDrawable(drawable);
}

catch (Exception e) { // If no image found for item, just set the image to a default image in drawable folder
// TODO Auto-generated catch block
Drawable drawable = context.getResources().getDrawable(R.drawable.shirts); // Default image
shirtsImage.setImageDrawable(drawable);
}

deleteFromCartButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

// To get the item from the listView for which the Add to Cart button is pressed
Item item = getItem(position);

// Delete the item from the cart by pressing the delete item button
DatabaseHelper db = new DatabaseHelper(getContext());
db.deleteItemFromCart(item.getID());

// Update the listView to reflect the changes
notifyDataSetChanged();
}

});

// Return the completed view to render on screen
return convertView;

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}

}

shoppingCart.java

package ankitkaushal.app.healthysizing;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.io.IOException;
import java.util.ArrayList;

public class shoppingCart extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shopping_cart);

final DatabaseHelper dbhelper;
final ListView listView;
final ListAdapter cartAdapter;

dbhelper = new DatabaseHelper(getApplicationContext());
try {
dbhelper.createDataBase();
} catch (IOException e) {
e.printStackTrace();
}

listView = (ListView) findViewById(R.id.itemsInCartList);
ArrayList<Item> cartList = dbhelper.getItemsInCart();

if (cartList != null) {
cartAdapter = new CartItemsAdapter(getApplicationContext(), cartList);
listView.setAdapter(cartAdapter);
}

listView.setEmptyView(findViewById(R.id.emptyCartMessage));

TextView displayTotalPrice = (TextView) findViewById(R.id.totalCartPrice);
String totalCartPrice = dbhelper.getTotalCartPrice();

if (totalCartPrice != null) {
displayTotalPrice.setText("Total Price: $" + totalCartPrice);
}

else {
displayTotalPrice.setText("Total Price: $0.00");
}

}

}

最佳答案

从支持列表对象中删除该项目。

deleteFromCartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

// To get the item from the listView for which the Add to Cart button is pressed
Item item = getItem(position);

// Delete the item from the cart by pressing the delete item button
DatabaseHelper db = new DatabaseHelper(getContext());
db.deleteItemFromCart(item.getID());

// Remove item
remove(item);

// Update the listView to reflect the changes
notifyDataSetChanged();
}

});

关于java - 使用notifyDataSetChanged方法删除项目后如何刷新listView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782059/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com