当你点击删除时,你必须调用delete
函数,并将你想删除的元素的ID
传递给这个函数。
为了做到这一点,你必须将这些元素读入database
,并挑选出你所选择的那一个。
我认为有一个问题应该是,position
是从零开始的,而进入数据库的元素是从位置1开始的,所以你必须考虑这个问题。
这应该是读取元素的功能。
(Check this更多信息,可能对你有用)
更新:由于你使用的是一个合同类,所以进行了调整
public int ReadID(int position){
mDbHelper = new YourDbHelper(this);
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String[] projection = {BaseColumns.intWhereToGoListOID,
String sortOrder = YourEntry.intWhereToGoListOID+ " ASC";
Cursor cursor = db.query(
YourEntry.TABLE_NAME, // The table to query
projection, // The array of columns to return (null to get all)
null, // The columns for the WHERE clause
null, // The values for the WHERE clause
null, // null if you don't want to group the rows
null, // null if you don't want filter by row groups
sortOrder // the order
try {
int idColumnIndex = cursor.getColumnIndex(YourEntry.intWhereToGoListOID);
int currentID = 0;
int count=0;
while ((cursor.moveToNext() == true) && (count != (position + 1))) {
currentID = cursor.getInt(idColumnIndex);
count ++;
return currentID;
} finally {
cursor.close();
为了更清楚地说明问题,请使用一个合同类,在那里你定义你的数据库表。如果你使用它,你可以引用像YourEntry.name_of_the_column这样的元素(你必须先导入这个类,例如:import .com.example. ...YourContract.YourEntry )。
这是一个contract class
的例子。
import android.provider.BaseColumns;
public class YourContract {
private YourContract(){}
public static final class YourEntry implements BaseColumns {
public static final String TABLE_NAME = "TABLE_TWHERETOGOLIST";
public static final String intWhereToGoListOID = BaseColumns.intWhereToGoListOID;
public static final String COL2 = "COL2";
public static final String intCategoriesOID = "CategoriesOID ";