2013-07-19 128 views
0

我正在做一個購物應用程序,我有每行加載在列表視圖中,每行都有一個刪除按鈕。當我點擊刪除按鈕,我可以得到它的位置和行的ID。我的問題是,當我在customadapter類的按鈕的onclick函數中調用數據庫函數時,我得到了一個nulpointerexception。Android CustomListview,SQLIte數據庫,CustomAdpater

我要的是通過將

@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
    Product prod = data.get(pos); 
    //String gt=prod.getProductName(); 
    prodid=prod.getId(); 
    prod.setId(prodid); 

        //passing id to database class gives NULLPOINTEREXCEPTION when opening database 
       dcon.open(); 
       dcon.DoDeleteItem(prodid) 

//just to show that button clicked 
Log.i("Delete Button Clicked", "**********"); 
Toast.makeText(context, "Delete button Clicked"+prodid+"::", 
Toast.LENGTH_SHORT).show(); 


} 
}); 

回答

0

我認爲你正在使用列表視圖行自定義佈局,並已創建爲ListView自定義適配器以從數據庫中刪除選定的行?如果沒有,我建議你這樣做。

然後你可以做的是將刪除按鈕的標籤設置爲表示數據庫的遊標數據的位置或標識。在你的onclick方法中,你將視圖轉換回你的類的刪除按鈕(它可以是Button或它可以是ImageButton,這取決於你用作刪除按鈕的類)。然後讀出標籤並將其轉換回整數位置或ID。現在你可以調用你的數據庫 - 特別是刪除函數並傳入這個位置/ id。

+0

Hi Yaojin,感謝您的建議,但是我有適用於listview的自定義適配器,以及那裏的刪除按鈕的onClick函數所在。你的解釋是有道理的,但我跟劇組以及所有人有困難,有沒有一些示例代碼使用這個,你可以參考我? – Aly