Listviewden kayıt nasıl silinir ?

Mehaba,

Listview üzerinde gösterilen verileri listview'e tıkladığımda nasıl silebilirim ?

 




	//VeritabanıSınıfım


	import android.content.Context;
	import android.database.Cursor;
	import android.database.sqlite.SQLiteDatabase;
	import android.database.sqlite.SQLiteDatabase.CursorFactory;
	import android.database.sqlite.SQLiteOpenHelper;
	import android.widget.ArrayAdapter;


	public class vtIslem extends SQLiteOpenHelper {


	 public vtIslem(Context context, String name, CursorFactory factory,
	   int version) {
	  super(context, name, factory, version);
	  
	 }


	 @Override
	 public void onCreate(SQLiteDatabase db) {
	  
	  db.execSQL("CREATE TABLE IF NOT EXISTS dgs (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , baslik VARCHAR, puan VARCHAR)");
	 }


	 @Override
	 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	  
	  db.execSQL("DROP TABLE IF EXIST dgs;");
	  onCreate(db);
	 }
	 
	 public void kayitekle(String baslik,String puan)
	 {
	 SQLiteDatabase db=this.getWritableDatabase();
	 db.execSQL("INSERT INTO dgs(baslik,puan) VALUES('" + baslik + "','" + puan + "')");
	 
	 }
	 
	 public void silme(String id)
	 {
	  
	 }
	 


	 
	 
	 public ArrayAdapter<String> tumKayitlar(Context context)
	{
	 String[] sutunlar = new String[] { "baslik", "puan"};
	 SQLiteDatabase db = this.getReadableDatabase();
	 Cursor c = db.query("dgs", sutunlar, null, null,null, null, null);
	
	 int baslikSiraNo = c.getColumnIndex("baslik");
	 int puanSiraNo = c.getColumnIndex("puan");
	 String dizi[]=new String[c.getCount()];
	 int sayac=0;
	 for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
	 dizi[sayac]=c.getString(baslikSiraNo) + " " + c.getString(puanSiraNo) ;
	 sayac+=1;
	 }
	
	 ArrayAdapter AA= new ArrayAdapter<String>(context,R.layout.ozellistview,dizi); 
	 return AA;
	 }
	 
	}


	


	

KayıtEkleme kodlarım

vtIslem.kayitekle( value.toString(), tv.getText().toString());

Kayıt listeleme kodlarım

vtIslem=new vtIslem(this, "dgs", null, 1);
	  
	  final ListView lvKayitlar=(ListView)findViewById(R.id.lstCustomListView);
	  
	  adaptor= vtIslem.tumKayitlar(getApplicationContext());
	 lvKayitlar.setAdapter(adaptor);
	 lvKayitlar.setTextFilterEnabled(true);


	

 




	lvKayitlar.setOnItemLongClickListener(new OnItemLongClickListener() {


	  @Override
	  public boolean onItemLongClick(AdapterView<?> parent, View view,
	    int position, long id) {
	  
	   // lvKayitlar.getItemAtPosition(position).toString(); bu itemdeki değeri balik + puan seklinde getiriyor.sil komutuna uyarlayamadım
	   return false;
	  }
	 });


	

Yardımlarınızı bekliyorum.

    +1

    Tuğba Üstündağ

    04 Mart 2015

    Örnek senaryo ve çözüm:Veritabanında okul tablon olsun .Tablonda student_id ve student_email var ve sen listviewde listelenmiş ,öğrencilerin email adreslerini silmek istiorsun.Veritabanındaki sutun değerlerini yani student_id ve student_email  alanları 2 boyutlu dizi icine yerlestirceksin.   database_veri_tablosu[i][0] =c.getString(c.getColumnIndex("student_id"));    database_veri_tablosu[i][1] =c.getString(c.getColumnIndex("student_email")); seklinde...   Sonrasında  bu dizi içindeki datalar for ile okuyup for icine     listStundent_id.add(student_id);    listStudent_email.add(student_email); seklnde okuyup   sutun değerlerini listview eklicek.Tabi sonrasında setAdapter yapmalısın   Listview onclik eventi icinde de  String student_id=listStundent_id.get(position).toString(); Toast.makeText(getApplicationContext(),student_id,Toast.LENGTH_LONG).show(); seklnde , tıkladıgın tüm listview itemlarının yani öğrencilerin id degerni bu sekilde alırsın sonrada delet sql sorguna id verirsin silme işlemi olur.   Bu anlattıklarımı proje haline getirdim .http://speedy.sh/TnXcG/ListviewDelete.rar indirip inceleyebilirsin.

    0

    Ahmet Burak Demirkoparan

    04 Mart 2015

    Şimdi şöyle düşünebiliriz.Senin sileceğin kayıtın id sine ihtiyacın var temel olarak ama listviewda sadece elinde ekrana bastığın stringler mevcut.Aslında elindeki string hangi alana aitse(veritabanındaki isim alanına mesela) o alana bu değeri gönderip de silme işlemi gerçekleştirebilirsin. Ama buradaki sıkıntımız şu senin veritabanından getirdiğin ve ekrana bastığın veri tek sütun değilde bir kaç sütunun birleşmiş hali(isim+baslik) gibi. Diyelim senin tablo adın Ogrenciler ve içinde ogrenciId,ogrenciAdSoy,ogrenciYas alanları mevcut. Java taraflı şöyle bir class yazabilirsin. [code] public class Ogrenciler {      /** Property ogrenciId */    int ogrenciId;      /** Property ogrenciAdSoy */    String ogrenciAdSoy;      /** Property ogrenciYas */    int ogrenciYas;      /**     * Constructor     */    public Ogrenciler() {    }      /**     * Gets the ogrenciId     */    public int getOgrenciId() {       return this.ogrenciId;    }      /**     * Sets the ogrenciId     */    public void setOgrenciId(int value) {       this.ogrenciId = value;    }      /**     * Gets the ogrenciAdSoy     */    public String getOgrenciAdSoy() {       return this.ogrenciAdSoy;    }      /**     * Sets the ogrenciAdSoy     */    public void setOgrenciAdSoy(String value) {       this.ogrenciAdSoy = value;    }      /**     * Gets the ogrenciYas     */    public int getOgrenciYas() {       return this.ogrenciYas;    }      /**     * Sets the ogrenciYas     */    public void setOgrenciYas(int value) {       this.ogrenciYas = value;    } }   [/code] Daha sonra veritabanından verileri çektiğin yerde  ArrayList<Ogrenci> ogrenciList = new ArrayList<Ogrenci>(); Ogrenci ogrenci = new Ogrenci(); ogrenci.setId(..) ogrenci.setAdSoy(...) ogrenci.setYas(..)  ogrenciList.add(ogrenci); diyip bütün kayıtları bu ogrenciList isimli arraylist'e atabilirsin. Daha sonra  ArrayAdapter<String> yerine ArrayList<Ogrenci> dönder bu methoddan ve activity'e bu öğrenci listesini al. Burdan sonra ise geleceğiyazanlar üzerinde android 301 eğitimlerinde özelleştirilmiş listview konusunu aç ve kendine adapter yazıp bu arraylisti içine gönder. Zaten bundan sonra tıklama yaptığında içerde şöyle bişey yapacaksın. Ogrenci tiklananOgrenci = (Ogrenci)parent.getItemAtPosition(position); int ogrenciId = tiklananOgrenci.getId(); ogrenci id değeride artık eline gelecek bunu veritabanına göndereceksin ve sildireceksin. Biraz uzun ve kafa karıştırıcı olmuş olabilir ama en dinamik yolu budur öğrenmeni tavsiye ederim.

    0

    Mücahid

    03 Mart 2015

    bunlar işe yaramadı kardeşim.listview item id ile sildiğimde farklı kaydı siliyor çünkü kayıt ekleyip sildiğinde id değerleri sürekli artıyor item id 0 1 2 .... şeklinde gidiyor

    0

    Zafer M ŞEN

    Mekatronik Mühendisliği - 03 Mart 2015

    kardeşm burada çevaplar mevcut faydalı olablr http://stackoverflow.com/questions/21547991/deleting-a-row-form-sqlite-database-via-listview http://stackoverflow.com/questions/14516889/android-listview-wont-update-after-deleting-database-data http://stackoverflow.com/questions/27640658/android-data-refresh-in-listview-after-deleting-from-database

    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.