2012-03-09 64 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); 
      } 
     });