Android 更改数据库值后,Listview未在baseadapter内更新
我使用SQLITE数据库存储列表项,并在应用程序中显示listview listview中的每个项目都有编辑文本值,默认值为1。 当用户将值从1更改为2时,必须在数据库中更新该值 此更新必须在适配器内部完成 下面是我更改编辑文本值的适配器代码Android 更改数据库值后,Listview未在baseadapter内更新,android,sqlite,Android,Sqlite,我使用SQLITE数据库存储列表项,并在应用程序中显示listview listview中的每个项目都有编辑文本值,默认值为1。 当用户将值从1更改为2时,必须在数据库中更新该值 此更新必须在适配器内部完成 下面是我更改编辑文本值的适配器代码 public class CustomAdapter_cart extends BaseAdapter { ArrayList<String> list_name = new ArrayList<String>(); ArrayL
public class CustomAdapter_cart extends BaseAdapter {
ArrayList<String> list_name = new ArrayList<String>();
ArrayList<String> list_price = new ArrayList<String>();
ArrayList<String> list_images = new ArrayList<String>();
ArrayList<String> list_model = new ArrayList<String>();
ArrayList<String> list_productid = new ArrayList<String>();
ArrayList<Integer> ids = new ArrayList<Integer>();
CustomAdapter_cart cart_refresh;
Bitmap b;
Context context;
AddToCart cart;
String value,name,price,image_new,model,product,qty;
private static LayoutInflater inflater = null;
Cursor cu;
String quant;
Holder holder = new Holder();
SharedPreferences sharedpreferences;
ArrayList<String>listMessages = new ArrayList<String>(new LinkedHashSet<String>());
ArrayList<String> quant_items = new ArrayList<String>();
Cursor mCursor;
ContentValues data=new ContentValues();
String model_item;
String id;
int id_final;
public CustomAdapter_cart(Context context, ArrayList<String> list_name, ArrayList<String> list_price, ArrayList<String> bitmapArray, ArrayList<String> list_model, ArrayList<String> list_productid,ArrayList<String> qty, ArrayList<Integer>ids ) {
this.context = context;
this.list_name = list_name;
this.list_price = list_price;
this.list_images = bitmapArray;
this.list_model = list_model;
this.list_productid = list_productid;
this.quant_items = qty;
this.cart_refresh = this;
this.ids = ids;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list_name.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public class Holder {
TextView tv_name, tv_price, tv_model,tv_product,tv_id;
ImageView image;
Button delete;
EditText quantity;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View rowView = convertView;
if (convertView == null) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.list_items_cart, null);
holder.tv_name = (TextView) rowView.findViewById(R.id.name_cart);
holder.tv_price = (TextView) rowView.findViewById(R.id.price_cart);
holder.image = (ImageView) rowView.findViewById(R.id.image_cart);
holder.tv_model = (TextView) rowView.findViewById(R.id.model_cart);
holder.tv_product = (TextView) rowView.findViewById(R.id.product_cart);
holder.delete = (Button) rowView.findViewById(R.id.delete);
holder.quantity = (EditText) rowView.findViewById(R.id.quantity);
holder.tv_id = (TextView)rowView.findViewById(R.id.ids);
rowView.setTag(holder);
}
else
holder = (Holder) rowView.getTag();
holder.tv_name.setText(list_name.get(position));
name = holder.tv_name.getText().toString();
holder.tv_price.setText(list_price.get(position));
price = holder.tv_price.getText().toString();
holder.tv_model.setText(list_model.get(position));
model = holder.tv_model.getText().toString();
holder.tv_product.setText(list_productid.get(position));
product = holder.tv_product.getText().toString();
holder.quantity.setText(quant_items.get(position));
quant = holder.quantity.getText().toString();
holder.tv_id.setText(Integer.toString(ids.get(position)));
id = holder.tv_id.getText().toString();
id_final = Integer.parseInt(id);
holder.image.setImageBitmap(loadImageFromStorage(list_images.get(position)));
image_new = holder.image.toString();
final View finalRowView1 = rowView;
holder.quantity.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
value = s.toString();
quant.replace(quant, value);
updateTable();
Toast.makeText(finalRowView1.getContext(), "Updating Table", Toast.LENGTH_SHORT).show();
}
});
final View finalRowView = rowView;
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name_item = ((TextView) finalRowView.findViewById(R.id.name_cart)).getText().toString();
String price_item = ((TextView) finalRowView.findViewById(R.id.price_cart)).getText().toString();
model_item = ((TextView) finalRowView.findViewById(R.id.model_cart)).getText().toString();
Intent in = new Intent(context, AddCart_FullImage.class);
in.putExtra("model", model_item);
in.putExtra("name", name_item);
in.putExtra("price", price_item);
context.startActivity(in);
}
});
return rowView;
}
private Bitmap loadImageFromStorage(String path) {
try {
File f = new File(path, "");
f.canRead();
b = BitmapFactory.decodeStream(new FileInputStream(f));
return b;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
public void updateTable() {
final DatabaseHandler db = new DatabaseHandler(context);
SQLiteDatabase db1 = db.getWritableDatabase();
try {
db.updateContact(new Cart(id_final,name, price, image_new, model, product, value));
Log.v("LOG", "After text change value db " + value);
} catch (Exception e) {
}
}
}
公共类CustomAdapter\u cart扩展BaseAdapter{
ArrayList_name=新的ArrayList();
ArrayList_price=新ArrayList();
ArrayList_images=新建ArrayList();
ArrayList_model=新建ArrayList();
ArrayList_productid=新的ArrayList();
ArrayList ID=新的ArrayList();
自定义适配器\u购物车\u刷新;
位图b;
语境;
AddToCart购物车;
字符串值、名称、价格、图像\新、型号、产品、数量;
专用静态充气机=空;
光标cu;
字符串数量;
支架=新支架();
SharedReferences SharedReferences;
ArrayListMessages=newArrayList(newLinkedHashSet());
ArrayList quant_items=新的ArrayList();
光标mCursor;
ContentValues数据=新的ContentValues();
字符串模型_项;
字符串id;
int id_最终版;
公共CustomAdapter\u购物车(上下文上下文、ArrayList列表名称、ArrayList列表价格、ArrayList位图数组、ArrayList列表模型、ArrayList列表产品ID、ArrayList数量、ArrayList ID){
this.context=上下文;
this.list\u name=list\u name;
this.list\u price=list\u price;
this.list_images=bitmapArray;
this.list\u model=list\u model;
this.list\u productid=list\u productid;
此.quant\u项目=数量;
this.cart\u refresh=此;
this.ids=ids;
充气器=充气器。从(上下文);
}
@凌驾
public int getCount(){
返回列表_name.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共类持有者{
text查看电视名称、电视价格、电视型号、电视产品、电视id;
图像视图图像;
按钮删除;
编辑文本数量;
}
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图){
视图行视图=转换视图;
if(convertView==null){
//TODO自动生成的方法存根
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
rowView=充气机。充气(R.layout.list\u items\u cart,空);
holder.tv\u name=(TextView)rowView.findViewById(R.id.name\u cart);
holder.tv\u price=(TextView)rowView.findViewById(R.id.price\u cart);
holder.image=(ImageView)rowView.findViewById(R.id.image\u cart);
holder.tv\u model=(TextView)rowView.findViewById(R.id.model\u cart);
holder.tv\u product=(TextView)rowView.findViewById(R.id.product\u cart);
holder.delete=(按钮)rowView.findviewbyd(R.id.delete);
holder.quantity=(EditText)rowView.findViewById(R.id.quantity);
holder.tv_id=(TextView)rowView.findviewbyd(R.id.id);
rowView.setTag(支架);
}
其他的
holder=(holder)rowView.getTag();
holder.tv_name.setText(list_name.get(position));
name=holder.tv_name.getText().toString();
holder.tv_price.setText(list_price.get(position));
price=holder.tv_price.getText().toString();
holder.tv_model.setText(list_model.get(position));
model=holder.tv_model.getText().toString();
holder.tv_product.setText(list_productid.get(position));
product=holder.tv_product.getText().toString();
holder.quantity.setText(quant_items.get(position));
quant=holder.quantity.getText().toString();
holder.tv_id.setText(Integer.toString(id.get(position));
id=holder.tv_id.getText().toString();
id_final=Integer.parseInt(id);
holder.image.setImageBitmap(loadImageFromStorage(list_images.get(position));
image_new=holder.image.toString();
最终视图finalRowView1=行视图;
holder.quantity.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
公共无效后文本已更改(可编辑){
value=s.toString();
数量替换(数量,值);
updateTable();
Toast.makeText(finalRowView1.getContext(),“更新表”,Toast.LENGTH\u SHORT.show();
}
});
最终视图finalRowView=行视图;
rowView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串name_item=((TextView)finalRowView.findViewById(R.id.name_cart)).getText().toString();
字符串price_item=((TextView)finalRowView.findViewById(R.id.price_cart)).getText().toString();
model_item=((TextView)finalRowView.findViewById(R.id.model_cart)).getText().toString();
Intent in=新的Intent(上下文,AddCart\u FullImage.class);
in.putExtra(“模型”,模型项);
in.putExtra(“名称”,项目名称);
in.putExtra(“价格”,价格项目);
背景。起始触觉(in);
}
});
返回行视图;
}
专用位图loadImageFromStorage(字符串路径){
试一试{
文件f=新文件(路径“”);
f、 canRead();
b=BitmapFactory.decodeStream(新文件输入流(f));
返回b;
}catch(filenotfounde异常){
e、 printStackTrace();
}
返回null;
}
公共void updateTable(){
final DatabaseHandler db=新的DatabaseHandler(上下文);
SQLiteDatabase db1=db.getWritableDatabase();
试一试{
db.updateContact(新购物车(id\u final、名称、价格、图像\u new、型号
holder.quantity.setText(quant_items.get(position));
quant.replace(quant, value);
updateTable();