I have a custom listview in my app.All its items are stored in database.I have a remove button in each row.Onclicking the remove button,I would like to delete corresponding row,both from database and Listview.I successfully executed the code to delete from database,but the change is not reflecting in my listview.I am not understanding what my datalist(name of datalist) is.
add2cart.java
public class add2cart extends Activity{
ListView adlstvw;
Button btn,remove_btn;
SQLiteDatabase mydb;
public String sme;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.add2crt);
adlstvw=(ListView)findViewById(R.id.lstvw_add2crt);
btn=(Button)findViewById(R.id.place_order);
Bundle extras = getIntent().getExtras();
if (extras != null) {
sme= extras.getString("dtls");
}
mydb=add2cart.this.openOrCreateDatabase("addcart", MODE_PRIVATE, null);
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=new CartAdapter(this,pname,price);
adlstvw.setAdapter(cart);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent in=new Intent(add2cart.this,buy_ltr.class);
Bundle bndl = new Bundle();
bndl.putString("som",sme);
in.putExtras(bndl);
startActivity(in);
}
});
}
}
CartAdapter.java
public class CartAdapter extends BaseAdapter{
public static ListView adlstvw;
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+"'");
////////////ADDED CODE/////////////////////
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;
}
}
}