Android 更改数据库值后,Listview未在baseadapter内更新

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

我使用SQLITE数据库存储列表项,并在应用程序中显示listview

listview中的每个项目都有编辑文本值,默认值为1。 当用户将值从1更改为2时,必须在数据库中更新该值

此更新必须在适配器内部完成

下面是我更改编辑文本值的适配器代码

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();