2012-11-05 86 views
0

当我在列表视图中单击一个项目时,如何删除数据库中的数据?请给我一些代码。 这是我的方法来选择项目的列表视图:删除数据表格数据库?

listview.setOnItemClickListener(new OnItemClickListener(){ 
     public void onItemClick(AdapterView adapterView, View convertView, int position, long id) 
     { 
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(AndroidSpinnerFromSQLiteActivity.this); 


      alertDialog.setTitle("Confirm Delete..."); 


      alertDialog.setMessage("Are you sure you want delete this?"); 


      alertDialog.setIcon(R.drawable.delete); 


      alertDialog.setPositiveButton("YES", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int which) { 


         } 
        }); 

      alertDialog.setNegativeButton("NO", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 

      alertDialog.show(); 
      } 
     }); 
    }; 

这是我的数据库类:

公共类数据库处理器扩展SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1; 


private static final String DATABASE_NAME = "spinnerExample"; 


private static final String TABLE_LABELS = "labels"; 


private static final String KEY_ID = "id"; 
private static final String KEY_NAME = "name"; 
public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 


@Override 
public void onCreate(SQLiteDatabase db) { 

    String CREATE_CATEGORIES_TABLE = "CREATE TABLE " + TABLE_LABELS + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT" +")"; 
    db.execSQL(CREATE_CATEGORIES_TABLE); 
} 


@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_LABELS); 


    onCreate(db); 
} 


public void insertLabel(String label){ 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, label); 


    db.insert(TABLE_LABELS, null, values); 
    db.close(); 
} 


public List<String> getAllLabels(){ 
    List<String> labels = new ArrayList<String>(); 


    String selectQuery = "SELECT * FROM " + TABLE_LABELS; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 


    if (cursor.moveToFirst()) { 
     do { 
      labels.add(cursor.getString(1)); 
     } while (cursor.moveToNext()); 
    } 


    cursor.close(); 
    db.close(); 


    return labels; 
} 

}

+0

你是通过一个'ContentProvider'实现的吗? – Estel

回答

2

在乌拉圭回合的数据库类代码添加一个方法

如果u想删除表中的所有原始然后用

db.execSQL("DELETE from "+Table_Name); 

其他ü要在表中删除特定原始

db.delete(Table_Name, "Raw_Field_Name" + "='" + Raw_field_value+"'", null); 

列表查看项目点击事件使用

Listview lv; 
//on create method 

    lv = (ListView) findViewById(R.id.list_contact_name); 

       lv.setOnItemClickListener(new OnItemClickListener() 
       { 

        public void onItemClick(AdapterView<?> arg0, View v, int position, 
          long id) { 

         // call DELETE method here 

        } 
       }); 
+0

我在menthod中需要一些代码在listview中选择项目吗? – TranGia

+0

但我可以使用什么删除方法?我试图找到它。 – TranGia

+0

public boolean deleteData(String Raw_field_value) { return db.delete(Table_Name,“Raw_Field_Name”+“='”+ Raw_field_value +“'”,null); }这个方法声明在你的数据库类中,然后使用这个 –

0

在助手类中添加一个方法:

public boolean deleteData(String name) 
{ 
    SQLiteDatabase db=getWritableDatabase(); 
    return db.delete(TABLE_NAME, KEY_NAME+"= ?", new String[]{name})>0; 
} 

用标签名称调用此方法。您将在列表视图OnItemClickListener中获得onItemClick方法。

+0

我需要一些代码在我的menthod中选择项目在列表视图? – TranGia

0

如果您想在删除数据后更新列表,则可以使用。

adapter.notifyDataSetChanged(); //适配器是您的适配器对象。