как удалить запись из таблицы? - PullRequest
0 голосов
/ 09 марта 2012

Я получаю данные в таблице. но мне нужно удалить его, когда пользователь нажимает на запись или строку, но
когда я нажимаю на номер позиции 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 ]

2 голосов
/ 09 марта 2012

Поскольку вы увеличиваете переменную counter перед установкой в ​​качестве тега в строке.Таким образом, у вас есть позиция 1 для строки 1, и, вероятно, это является причиной удаления неправильной строки.

1 голос
/ 09 марта 2012

Вместо написания кода динамического создания TableLayout в onCreate () создайте отдельный метод и вызовите его из onCreate () ...

В этом методе первая строка будет: TableLayout table = (TableLayout) findViewById (R.id.locprofile_table);

записать над строкой вне цикла for. Вторая строка будет:

table.removeAllViews ();

Итак, когда вы удаляете любую строку, просто снова вызывайте метод, который вы вызывали, так же, как в onCreate () .....

1 голос
/ 09 марта 2012

Вы можете поставить эту строку в конце.

table.removeView(v);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...