从游标适配器中删除和更新值
Deleting and Updating values from a cusrsor adapter
我是 android 开发的新手,我已经使用游标适配器将值填充到列表视图中。我正在尝试使用列表视图删除和更新值,但我不确定这是如何使用游标适配器完成的。我也无法单击列表视图项
我在我的数据库处理程序中使用了以下方法 class 来删除和更新值
删除方法
public void DeletingCustodian(Custodians custodians)
{
SQLiteDatabase db_database = getWritableDatabase();
//Deleting the custodian from the Database where the custodian ID matches to the selcted ID
db_database.delete(TABLE_CUSTODIAN,CUSTODIAN_ID + "=?" , new String[]{String.valueOf(custodians.getCust_id())});
db_database.close();
}
更新方法
public int updateCustodian(Custodians cust)
{
SQLiteDatabase db_database = getWritableDatabase();
ContentValues values = new ContentValues();
values.put(CUSTODIAN_NAME,cust.getCust_Name());
values.put(CUSTODIAN_DESIGNATION,cust.getCust_Design());
values.put(CUSTODIAN_DEPARTMENT,cust.getDepartment());
int roweffected = db_database.update(TABLE_CUSTODIAN,values,CUSTODIAN_ID + "=?", new String[]{String.valueOf(cust.getCust_id())});
db_database.close();
return roweffected;
}
我创建了一个上下文菜单,该菜单在选择某个项目时显示了编辑和删除。
public void onCreateContxtManu(ContextMenu menu,View view, ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu,view,menuInfo);
menu.setHeaderTitle("Custodian Options");
menu.add(Menu.NONE,EDIT,menu.NONE,"Edit Custodian");
menu.add(Menu.NONE,DELETE,menu.NONE,"Delete Custodian");
}
public void deletingitemsfromlist()
{
CustodianListview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return false;
}
});
}
public boolean onContextItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case EDIT:
break;
case DELETE:
break;
}
return false;
}
更新数据库中的数据,再次查询数据库得到新游标,然后调用
oldCursor = myCursorAdapter.swapCursor(newCursor); // hands you back oldCursor
或:
myCursorAdapter.changeCursor(newCursor); // automatically closes old Cursor
myCursorAdapter.notifyDataSetChanged()
通知 ListView
数据集已更改,它应该自行刷新
试试这个,它可能对你有帮助
删除数据库连接器中的代码
// Delete a row in Local database
public void delete(int ids) {
database.delete(TABLE_NAME, KEY_ROWID + " = " + ids, null);
}
在你的Listview页面代码中Onitem长按删除
@Override
public boolean onItemLongClick(AdapterView arg0, View v,
int position, long arg3)
{
try
{
TextView id = (TextView) v.findViewById(R.id.textView4);
ids1 = Integer.parseInt(id.getText().toString());
AlertDialog.Builder ad = new AlertDialog.Builder(Page1_Landing.this);
//ad.setTitle("Notice");
ad.setMessage("Sure you want to delete this Item ?");
//Delete Positive Button
ad.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
@SuppressWarnings("deprecation")
@Override
public void onClick(DialogInterface dialog, int which)
{
try
{
//Delete of record from Database and List view.
helper.delete(ids1);
cur.requery();
myCursorAdap.notifyDataSetChanged();
List.setAdapter(myCursorAdap);
Toast.makeText(Page1_Landing.this,"Selected Product is Successfully Deleted...!", Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
e.printStackTrace();
Log.i("Exception ", "in Delete a Product");
}
}
});
//long press delete cancel
ad.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
ad.show();
}
catch(Exception e)
{
e.printStackTrace();
}
return true;
}
更新代码
DatabaseConnector helper = new DatabaseConnector(this);
helper.open();
helper.updatedetails(rowID,name1,desc, dept);
Toast.makeText(getApplicationContext(),"Updated Successfully...!", Toast.LENGTH_SHORT).show();
更新数据库代码
// updating the data ....
public boolean updatedetails(long rowId, String name,
String desc, String dept)
{
ContentValues args = new ContentValues();
args.put(KEY_ROWID, rowId);
args.put(KEY_NAME, product);
args.put(KEY_DESC, cat);
args.put(KEY_DEPT, serial);
return database.update(TABLE_NAME, args, KEY_ROWID + "=" + rowId, null) > 0;
}
我是 android 开发的新手,我已经使用游标适配器将值填充到列表视图中。我正在尝试使用列表视图删除和更新值,但我不确定这是如何使用游标适配器完成的。我也无法单击列表视图项
我在我的数据库处理程序中使用了以下方法 class 来删除和更新值
删除方法
public void DeletingCustodian(Custodians custodians)
{
SQLiteDatabase db_database = getWritableDatabase();
//Deleting the custodian from the Database where the custodian ID matches to the selcted ID
db_database.delete(TABLE_CUSTODIAN,CUSTODIAN_ID + "=?" , new String[]{String.valueOf(custodians.getCust_id())});
db_database.close();
}
更新方法
public int updateCustodian(Custodians cust)
{
SQLiteDatabase db_database = getWritableDatabase();
ContentValues values = new ContentValues();
values.put(CUSTODIAN_NAME,cust.getCust_Name());
values.put(CUSTODIAN_DESIGNATION,cust.getCust_Design());
values.put(CUSTODIAN_DEPARTMENT,cust.getDepartment());
int roweffected = db_database.update(TABLE_CUSTODIAN,values,CUSTODIAN_ID + "=?", new String[]{String.valueOf(cust.getCust_id())});
db_database.close();
return roweffected;
}
我创建了一个上下文菜单,该菜单在选择某个项目时显示了编辑和删除。
public void onCreateContxtManu(ContextMenu menu,View view, ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu,view,menuInfo);
menu.setHeaderTitle("Custodian Options");
menu.add(Menu.NONE,EDIT,menu.NONE,"Edit Custodian");
menu.add(Menu.NONE,DELETE,menu.NONE,"Delete Custodian");
}
public void deletingitemsfromlist()
{
CustodianListview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return false;
}
});
}
public boolean onContextItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case EDIT:
break;
case DELETE:
break;
}
return false;
}
更新数据库中的数据,再次查询数据库得到新游标,然后调用
oldCursor = myCursorAdapter.swapCursor(newCursor); // hands you back oldCursor
或:
myCursorAdapter.changeCursor(newCursor); // automatically closes old Cursor
myCursorAdapter.notifyDataSetChanged()
通知 ListView
数据集已更改,它应该自行刷新
试试这个,它可能对你有帮助
删除数据库连接器中的代码
// Delete a row in Local database
public void delete(int ids) {
database.delete(TABLE_NAME, KEY_ROWID + " = " + ids, null);
}
在你的Listview页面代码中Onitem长按删除
@Override
public boolean onItemLongClick(AdapterView arg0, View v,
int position, long arg3)
{
try
{
TextView id = (TextView) v.findViewById(R.id.textView4);
ids1 = Integer.parseInt(id.getText().toString());
AlertDialog.Builder ad = new AlertDialog.Builder(Page1_Landing.this);
//ad.setTitle("Notice");
ad.setMessage("Sure you want to delete this Item ?");
//Delete Positive Button
ad.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
@SuppressWarnings("deprecation")
@Override
public void onClick(DialogInterface dialog, int which)
{
try
{
//Delete of record from Database and List view.
helper.delete(ids1);
cur.requery();
myCursorAdap.notifyDataSetChanged();
List.setAdapter(myCursorAdap);
Toast.makeText(Page1_Landing.this,"Selected Product is Successfully Deleted...!", Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
e.printStackTrace();
Log.i("Exception ", "in Delete a Product");
}
}
});
//long press delete cancel
ad.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
ad.show();
}
catch(Exception e)
{
e.printStackTrace();
}
return true;
}
更新代码
DatabaseConnector helper = new DatabaseConnector(this);
helper.open();
helper.updatedetails(rowID,name1,desc, dept);
Toast.makeText(getApplicationContext(),"Updated Successfully...!", Toast.LENGTH_SHORT).show();
更新数据库代码
// updating the data ....
public boolean updatedetails(long rowId, String name,
String desc, String dept)
{
ContentValues args = new ContentValues();
args.put(KEY_ROWID, rowId);
args.put(KEY_NAME, product);
args.put(KEY_DESC, cat);
args.put(KEY_DEPT, serial);
return database.update(TABLE_NAME, args, KEY_ROWID + "=" + rowId, null) > 0;
}