2012-05-21 5 views
1
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, поэтому для меня это кривая обучения.Удалить элемент из базы данных - ListView - Android

+1

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

ответ

6

setOnItemClickListener установить на свой ListView ...

listview.setOnItemClickListener(new OnItemClickListener() { 

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

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

     } 
    }); 

и в методе удалить

public void remove(long id){ 
     String string =String.valueOf(id); 
     database.execSQL("DELETE FROM favorite WHERE _id = '" + string + "'"); 
    } 
+0

Я есть немного вопрос. Как хранить 'id' в Db, чтобы заставить ваше решение работать? Должен ли я помещать «целочисленный первичный ключ» или «целочисленный первичный ключ автоинкремент» или «целочисленный первичный ключ автоинкремент не null»? – Apurva

+0

автоинкремент целочисленного первичного ключа –

+0

Спасибо за ответ, после допроса я прочитал в документации sqlite, что автоинкремент уменьшает скорость db, и не имеет никакого значения, пишете ли вы целочисленный первичный ключ или целочисленный первичный ключ автоинкремент '. – Apurva

1

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

public void onListItemClick(ListView parent, View v, int position, long id) { 
     // do something with the cursor 
} 
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); 
     } 
Смежные вопросы