如何从tableview中删除记录?

时间:2012-03-09 12:02:12

标签: android sqlite tableview

我在表格中获取数据。但是我需要在用户点击记录或行时删除它 当我点击2号位置记录时,删除3重新记录..但我需要删除
记录用户单击的位置。请给我一些提示或教程。 谢谢..
这是我的示例代码。

 public class MyTable extends Activity {

int counter=0;
 MySQLiteHelper m=new MySQLiteHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.locprofile);



      // Reading all contacts
    final MySQLiteHelper m=new MySQLiteHelper(getBaseContext());
    final List<LocWiseProfileBeans> LocWiseProfile= m.getAllLocWiseProfile();       

    for (final 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()+"id:"+cn.getId();
        TextView t = new TextView(this);

       //final int Id=cn.Id;
        // set the text to "text xx"
        t.setText(cn.getLocname());

        TextView t2 = new TextView(this);
        t2.setText(cn.getSelectedprofile());



        row.setTag(counter);  //  use counter or index for tag, so you can get the data from LocWiseProfile later
        row.setOnClickListener(new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                try{
                int tag = (Integer)v.getTag();
                LocWiseProfileBeans cn = LocWiseProfile.get(tag);
                    int value=cn.getId();
                    m.delete(value);
                    deleteMessage();

                }catch(Exception e){}

                /*LocWiseProfileBeans lc=new LocWiseProfileBeans();
                int tag=(Integer)lc.getId();
                LocWiseProfileBeans value=LocWiseProfile.get(tag);
                //if(value.Id);
                m.delete(value.Id);
                deleteMessage();*/

            }
        });

3 个答案:

答案 0 :(得分:2)

因为您在设置为行上的标记之前递增counter变量。 所以你在第1行有一个位置1,这可能是删除错误行的原因。

答案 1 :(得分:1)

你可以把这一行放在最后。

table.removeView(v);

答案 2 :(得分:1)

不是在onCreate()中动态编写创建TableLayout的代码,而是创建一个单独的方法并从onCreate()调用它...

在该方法中,第一行将是: TableLayout table =(TableLayout)findViewById(R.id.locprofile_table);

在for循环之外写上面的行。第二行将是:

table.removeAllViews();

所以当你删除任何一行时,只需再次调用你被取消的方法,就像在onCreate()中一样......