2013-05-08 97 views
0

我想通过ItemlongClickListener从我的列表视图中删除项目。显示项目是我的数据库的列值。数据库查询是在单独的文件中编写的,列表视图代码位于单独的文件中。 我试过,但我的应用程序越来越停止.. 我的ListView控件的页面代码如下:从列表视图中删除项目(使用sqlite删除查询)

fav_quote.setOnItemLongClickListener(new OnItemLongClickListener() { 
     public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) { 
      Log.w("DELETED", " DELETED"); 

      String position1 = adapt.getItem(position); 

      Fav del = new Fav(this); 
      del.deleteEntry(position1); 
      del.close(); 
      return false;    
     } 

数据库代码

@Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE); 
     onCreate(db); 
    }  
} 

public Fav(Context c) { 

    ourContext = c; 
} 

public Fav(OnItemLongClickListener onItemLongClickListener) { 
    Context c1 = null; 
    ourContext = c1; 
    // TODO Auto-generated constructor stub 
} 

public Fav open() throws SQLException { 
ourHelper = new DbHelper(ourContext); 
ourDatabase = ourHelper.getWritableDatabase(); 
return this; 
} 
public void close(){ 

    ourHelper.close(); 
} 

public long createEntry(String header, String quote_value) { 
    // TODO Auto-generated method stub 
    ContentValues cv = new ContentValues(); 
    cv.put(KEY_HEADER, header); 
    cv.put(KEY_QUOTE_VALUE, quote_value); 
    return ourDatabase.insert(DATABASE_TABLE, null, cv); 
} 

public String getData() { 
    // TODO Auto-generated method stub 
    String[] columns = new String []{KEY_ROWID, KEY_HEADER, KEY_QUOTE_VALUE};  

    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 
    String result = "";  
    int iRow = c.getColumnIndex(KEY_ROWID); 
    int iHeader = c.getColumnIndex(KEY_HEADER); 
    int iQuote_value = c.getColumnIndex(KEY_QUOTE_VALUE); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
     result = result + c.getString(iRow)+ "." +c.getString(iHeader)+ ":" +c.getString(iQuote_value)+ ":"; 
    }  
    return result;    
} 

public void deleteEntry(String position1) { 
    // TODO Auto-generated method stub 
    ourDatabase.delete(DATABASE_TABLE, KEY_ROWID + "=" + position1 , null); 
} 

回答

0

在deleteEntry类,你必须初始化类的源码。

public void deleteEntry(String position1) { 
// TODO Auto-generated method stub 
SQLiteDatabase ourDatabase = this.getWritableDatabase(); 
ourDatabase.delete(DATABASE_TABLE, KEY_ROWID + "=" + position1 , null); 
} 
+0

它仍然没有工作 – pramod 2013-05-08 07:37:38

+0

请告诉我您的sqlite的代码是类的名称? – Saad 2013-05-08 07:40:23

1

是否从数据库中删除值? 如果是的话那么无论是从您的电话适配器方法

notifyDataSetChanged(); 

删除该条目。如果没有你有一些问题与数据库。

0

尝试

Fav del = new Fav(NameOfActivityClass.this);