2016-11-26 59 views
-4

這是我的列表視圖活動。我想刪除列表視圖中的特定項目,而不是刪除表格中的所有項目。單擊列表視圖中的刪除數據庫

我已經搜索了類似的問題,但是我找到的所有解決方案都無法幫到我。我希望你們會幫助。

package com.example.asus.dogfeeder; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.ContextMenu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 

public class ScheduleListActivity extends Activity { 

    ListView listView; 
    SQLiteDatabase sqLiteDatabase; 
    SchedDbHelper schedDbHelper; 
    Cursor cursor; 
    ListDataAdapter listDataAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_schedule_list); 

     listView =(ListView) findViewById(R.id.ListView); 
     listDataAdapter = new ListDataAdapter(getApplicationContext(), R.layout.row_layout); 
     listView.setAdapter(listDataAdapter); 
     schedDbHelper = new SchedDbHelper(getApplicationContext()); 
     sqLiteDatabase = schedDbHelper.getReadableDatabase(); 
     cursor = schedDbHelper.getInformations(sqLiteDatabase); 

     if(cursor.moveToFirst()) 
     { 
      do{ 

       String day,time,amount; 
       day = cursor.getString(0); 
       time = cursor.getString(1); 
       amount = cursor.getString(2); 
       DataProvider dataProvider = new DataProvider(day,time,amount); 
       listDataAdapter.add(dataProvider); 
       registerForContextMenu(listView); 

      }while(cursor.moveToNext()); 
     } 
    } 

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

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
     switch (item.getItemId()) 
     { 
      case R.id.delete_id: 
       sqLiteDatabase.delete(ScheduleContract.NewSchedInfo.TABLE_NAME,null,null); 
       listDataAdapter.notifyDataSetChanged(); 
       Toast.makeText(getBaseContext(), "Deleted", Toast.LENGTH_SHORT).show(); 
       return true; 
      default: 
       return super.onContextItemSelected(item); 
     } 
    } 
} 

回答

0

做這樣的事情

在SqLiteDatabase創建刪除方法如下

public void deleteRow(String id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + KEY_ID + "='" + id + "'"); 
} 

在刪除按鈕調用這個方法就像

sqLiteDatabase.deleteRow(id); // Pass id here and re-set adapter to listview 

你的問題就迎刃而解了......

相關問題