Вопрос по database, android, listview – Удалить элемент из базы данных - ListView - Android

2
public class DataViewActivity extends Activity{
SQLiteDatabase db;
SimpleCursorAdapter adapter;
String dbTable = "users";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_layout);
ListView listView = (ListView) findViewById(R.id.dbPop);

DBHelper dbhelper = new DBHelper(DataViewActivity.this);
db = dbhelper.getWritableDatabase();

Cursor cursor = db.query(dbTable, null, null, null, null, null, null);
startManagingCursor(cursor);

String[] from = new String[] { "name","_id"};
int[] to = new int[] { android.R.id.text1 };
adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from,
        to);

    listView.setAdapter(adapter);
  }
}

Как реализовать onClick слушатель этого кода для удаления выбранной строки базы данных. Я мало знаю об Android, поэтому для меня это кривая обучения.

Ваш вопрос мне очень помог ... :) Gopal00005

Ваш Ответ

3   ответа
3
    listview.setOnItemClickListener(new OnItemClickListener(){

    public void onItemClick(AdapterView<?> arg0, View v, int pos,long id) {
            // TODO Auto-generated method stub
      {
             TextView tv=(TextView)v;
     String s1=tv.getText().toString();
            //delete row
            String delgrp="DELETE FROM (tablename) WHERE  (row)='"+s1+"'";
    sdb.execSQL(delgrp);
      }
7

setOnItemClickListener в ваш список просмотра ...

listview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

            database.remove(id);//create removemethod in database class

        }
    });

and in remove method

    public void remove(long id){
        String string =String.valueOf(id);
        database.execSQL("DELETE FROM favorite WHERE _id = '" + string + "'");
    }
У меня есть маленький вопрос. Как хранитьid в Db, чтобы ваше решение работало? Должен ли я положитьinteger primary key или жеinteger primary key autoincrement или жеinteger primary key autoincrement not null?
Спасибо за ответ, после допроса я прочитал в документации sqlite, что автоинкремент уменьшает скорость БД и не имеет значения, пишете ли выinteger primary key или жеinteger primary key autoincrement.
автоинкремент первичного ключа
1

ListView.onListItemClickв качестве третьего параметраposition. Position это запись, возвращеннаяAdpater.getItem(int), Поэтому, когда вы нажимаете на строку вашегоListView,ListView.onListItemClick уволен. Там вы можете получить свою запись Адаптера и использовать информацию, необходимую для удаления записи из базы данных.

 View v, int position, long id) {
      // do something with the cursor
}

Похожие вопросы