gpt4 book ai didi

android - 从 ListView 中删除自定义 ListView 中的项目,单击按钮

转载 作者:行者123 更新时间:2023-11-29 00:15:16 27 4
gpt4 key购买 nike

我有一个自定义 ListView ,每行都有删除按钮。 ListView 中的项目显示在数据库中。单击删除按钮时,数据库中的项目被删除。但它没有反射(reflect)在 ListView 中。我需要删除相应的该项目的行。

CartAdapter.java

public class CartAdapter extends BaseAdapter
{

private final String[] pname;
private final String[] price;
private Context cntxt;
public CartAdapter(Context c,String [] pname,String [] price)
{

cntxt=c;
this.pname=pname;
this.price=price;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return pname.length;
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

View List;
LayoutInflater mLayoutInflater=(LayoutInflater)cntxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView==null) {
List=new View(cntxt);
List=mLayoutInflater.inflate(R.layout.add2crt_sub,parent, false);

}
else {
List=(View)convertView;
}

Button button=(Button)List.findViewById(R.id.remove);
button.setTag(position);
button.setOnClickListener(new OnClickListener() {

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


int position = (Integer)v.getTag();
SQLiteDatabase mydb=cntxt.openOrCreateDatabase("addcart",Context.MODE_PRIVATE, null);
String pnam = pname[position];

mydb.execSQL("DELETE FROM add2cart WHERE pnme ='"+pnam+"'");

Cursor cr = mydb.rawQuery("SELECT * FROM add2cart", null);
String [] pname = new String[cr.getCount()];
String [] price = new String[cr.getCount()];

int i = 0;
while(cr.moveToNext())
{
String name = cr.getString(cr.getColumnIndex("pnme"));
String prprice = cr.getString(cr.getColumnIndex("prate"));
pname[i] = name;
price[i] = prprice;
i++;
}

CartAdapter cart=CartAdapter.this;
add2cart.adlstvw.setAdapter(cart);
notifyDataSetChanged();
}
});
TextView nametxt=(TextView)List.findViewById(R.id.prdt_nme);
final TextView pricetxt=(TextView)List.findViewById(R.id.prdt_rate);
final TextView totltxt=(TextView)List.findViewById(R.id.prdt_totl);
final EditText edittext=(EditText)List.findViewById(R.id.prdt_qnty);
edittext.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub

String s1=pricetxt.getText().toString();
String s2=edittext.getText().toString();
int i1=Integer.parseInt(s1);
int i2=Integer.parseInt(s2);
int res=i1*i2;
totltxt.setText(Integer.toString(res));
if (s2.matches("")) {

edittext.setText("");

}


}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub




}



@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub

}
});

nametxt.setText(pname[position].toString());
pricetxt.setText(price[position]);

return List;
}


}

最佳答案

首先你需要一个Context类的引用来打开数据库

 SQLiteDatabase mydb=CartAdapter.this.openOrCreateDatabase("addcart", MODE_PRIVATE, null);

上面的代码是错误的

你必须将上下文传递给数据库类,我在上面的行中看不到...所以如果我错了请纠正我

android.database.sqlite.SQLiteException: near "(": syntax error: DELETE FROM add2cart WHERE pname=button.setTag(position

从上面的行中安静地清理下面的代码中有一个语法错误

mMydb.execSQL("DELETE FROM add2cart WHERE pname=button.setTag(position)");

我想正确的代码可能是

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

int position = (Integer)v.getTag();
//this will give you the position of the data been clicked
// how extract the data item from the list at the position
// for eg that data is in pname vriable
SQLiteDatabase mydb=cntxt.openOrCreateDatabase("addcart",Context.MODE_PRIVATE, null);
String pnam = pname[position];
mydb.execSQL("DELETE FROM add2cart WHERE pnme = '"+pnam+"'");
notifyDataSetChanged();


}
});

您还必须从列表中删除一个项目 String []pname 以反射(reflect) ListView 中的更改您最好使用 List pname,因为在 List 数据结构中删除更好

关于android - 从 ListView 中删除自定义 ListView 中的项目,单击按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352295/

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