2012-03-09 65 views
0

我使用以下代碼從數據庫中提取記錄。如何在sqlite中檢索後啓用記錄刪除?

for (LocWiseProfileBeans cn : LocWiseProfile) { 
     // get a reference for the TableLayout 
     TableLayout table = (TableLayout) findViewById(R.id.locprofile_table); 

     // create a new TableRow 
     TableRow row = new TableRow(this); 

     // count the counter up by one 
     counter++; 


     String log = "Loc Name: "+cn.getLocname()+" ,Lattitude: " + cn.getLattitude()+ " ,Longitude: " + cn.getLongitude()+ " , Selected Profile :"+cn.getSelectedprofile(); 
     TextView t = new TextView(this); 
     // set the text to "text xx" 
     t.setText(cn.getLocname()); 

     TextView t2 = new TextView(this); 
     t2.setText(cn.getSelectedprofile()); 
     row.addView(t); 
     row.addView(t2); 
     table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

但我需要啓用此記錄以刪除用戶請求。
意思是如果用戶點擊第二條記錄,那麼這條記錄將被刪除。
我試圖找到答案,但沒有找到任何合適的答案.......
請給我參考代碼或文章。
先謝謝您!

+0

也許你可以使用ListView來顯示結果? – Hanon 2012-03-09 08:49:41

+0

哪些視圖應該用於啓用記錄?謝謝 – 2012-03-09 08:51:10

+0

@raju:如果用戶點擊任何記錄,那麼它應該被刪除.. – 2012-03-09 09:18:37

回答

2

您可以通過將onClickListener設置爲您的行來做到這一點。 要確定哪個行被點擊,您可以爲該行設置一個唯一標籤。

row.setTag(counter); // use counter or index for tag, so you can get the data from LocWiseProfile later 
row.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     int tag = (Integer)view.getTag(); 
     LocWiseProfileBeans cn = LocWiseProfile.get(tag); 
     // Perform delete action here 
     // ... 
    } 
}); 

如果你想簡單地從數據庫的列表中顯示的結果,我建議你使用ListActivity或ListView,使用適配器可以顯示和更簡單的方式管理數據。

+0

但如何將此標記值設置爲特定的行。我使用你的邏輯,但它只刪除頂行沒有選擇的行。再次給我一個好處...謝謝 – 2012-03-09 11:19:02

+1

您將標記設置爲所有行。通常使用行索引作爲它的標記,因此當您以後使用get標記時,標記的值就是行索引。所以你可以使用這個索引來處理刪除內容。但有一點是,您必須在刪除行後更新標籤,因爲數據列表已更改。如果您使用ListView/ListActivity,則適配器將幫助您管理此更改。 – Hanon 2012-03-09 12:38:22

+0

row.setTag(counter); //使用計數器或索引標籤,這樣你就可以得到LocWiseProfile後 row.setOnClickListener(新View.OnClickListener(){ \t \t \t \t \t \t \t \t @覆蓋 \t \t \t \t公共無效的onClick數據(視圖v) \t \t \t \t { \t \t \t \t \t嘗試{ \t \t \t \t \t int tag =(Integer)v.getTag(); \t \t \t \t \t LocWiseProfileBeans cn = LocWiseProfile.get(tag); \t \t \t如果(標籤== cn.getId())\t \t \t \t { \t \t \t \t \t \t m.delete(CN。的getId()); \t \t \t \t \t \t deleteMessage(); \t \t \t} \t \t \t \t \t}趕上(例外五){} \t \t \t \t \t這是正確? – 2012-03-09 12:51:38

1
//decleration 
EventDataSQLHelper eventsData; //Class where table is created 
SQLiteDatabase dbx,rdbx; 

//onCreate 
eventsData = new EventDataSQLHelper(this); 
rdbx= eventsData.getReadableDatabase(); 
     dbx=eventsData.getWritableDatabase(); 
btn1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
//specify the id of the record to be deleted 
      dbx.delete("tablename", "id=" ?, null); 
      } 
     });