2017-05-09 18 views
0

私が望むのは、ユーザーがコンテキストに接触するときです。メニューは「削除」という項目で表示されますが、これは問題ありません。 Sqlitは Activity.class(それは私がちょうどクリックした連絡先に対応)sqliteから行を削除する(コンテキストメニュー)

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.context_menu, menu); 

} 


@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    int i = info.position; 
    switch (item.getItemId()) { 
     case R.id.delete: 

      dbHandler.deleteEtudiant(i); 
      Toast.makeText(this,"deleted "+i, Toast.LENGTH_SHORT).show(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

MyDBHandler.class

あなたのコードの問題は、あなたが「AdapterContextMenuInfo」オブジェクトのIDを取得しているということである
public void deleteEtudiant(int i) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete("etudiant", "Id+ =" + i, null); 
} 

答えて

0

とそれをデータベース "delete()"メソッドに送ります。しかし実際には、SQliteデータベースの特定の行の "ID"列に格納されている値のデータベース項目のIDを送信する必要があります。

以下のチュートリアルをご覧になり、チュートリアルのgetContact()とdeleteContact()メソッドを確認してください。

http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

+0

私はこのtutoをチェックしようとしています!私はちょうどクリックした要素のIDを得ることができますか? –

+0

IDを取得するには、まずアイテムを取得する必要があります。あなたはあなたのアダプターに配列を与えておく必要があります。あなたは、アダプタから位置を取得し、その特定の位置に配列から特定の行を取得する必要があります。今度はその行からIDを取得できます。 –

+0

どうすればいいですか? –

関連する問題