Listview e SQLite veritabanımdan verileri çektim.LisViewe contextmenu bağladım.Contextmenu da düzenle ve sil seçene ği var.Sil deyince listedeki kişiyi hem listeden hemde veritabanından silmesi gerek.Sil deyince kişi listeden kayboluyor.Activity kapatık geri açtığımda sildiğim kişiyi yeniden listede göruyorum.Düzenle deyince düzenlenecek activity açılacak ve kişi ile ilgili yeni girilrn verilerle kişi bilgileri güncellenecek.Ancak güncellem işlemi yaptıktan sonra kişi bilgilerine bakıyorum hiç birşey değişmemiş işte kodlarım: TamlisteActivity:
public class TamlisteActivity extends Activity {
private Veritabani2 veritabani2 = new Veritabani2(this);
private static final int duzenle=Menu.FIRST;
private static final int sil=Menu.FIRST+1;
private ArrayList<String> kisiler;
private ArrayAdapter<String> adapter;
private ListView liste;
private Context context =this;
public void sil(int id){
SQLiteDatabase db=veritabani2.getWritableDatabase();
db.delete("KisiTablosu","_id"+"=?"+id,null);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(Menu.NONE,duzenle,0,"Düzenle");
menu.add(Menu.NONE,sil,1,"Sil");
}
@Override
public boolean onContextItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case sil:
AlertDialog.Builder msg=new AlertDialog.Builder(context);
msg.setTitle("Uyarı");
msg.setCancelable(true);
msg.setMessage("Seçtiğiniz kişi silinsin mi?");
msg.setNegativeButton("Hayır",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
msg.setPositiveButton("Evet",new DialogInterface.OnClickListener() {
@Override
public void onClick(Di
``alogInterface dialogInterface, int i) {
int position;
final AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
position = (int) info.id;
sil(position);
kisiler.remove(position) ;
adapter.notifyDataSetChanged();
}
});
AlertDialog a=msg.create();
a.show();
break; case duzenle:
int position2;
Intent i=new Intent(TamlisteActivity.this,KisiDuzenleActivity.class);
final AdapterView.AdapterContextMenuInfo g=(AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
position2=(int)g.id;
i.putExtra("veri2",position2);
startActivity(i);
finish();
break;
default:
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onBackPressed() {
Intent i = new Intent(TamlisteActivity.this, MainActivity.class);
startActivity(i);
finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tamliste);
liste = (ListView) findViewById(R.id.liste);
kisiler= new ArrayList<String>();
SQLiteDatabase db = veritabani2.getReadableDatabase();
Cursor c = db.rawQuery("SELECT _id,ad,cz,yil,ay FROM KisiTablosu", null);
final ArrayList<Integer> ekle = new ArrayList<Integer>();
int i = 1;
if (c.moveToFirst()) {
do {
final String ad = c.getString(c.getColumnIndex("ad"));
final int id = c.getInt(c.getColumnIndex("_id"));
ekle.add((int) id);
kisiler.add( ad);
i++;
}
while (c.moveToNext());
c.close();
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,kisiler);
liste.setAdapter(adapter);
registerForContextMenu(liste);
} else {
Toast.makeText(getApplicationContext(), "Kayıtlı kişi bulunmadığından listeleme yapılamıyor",
Toast.LENGTH_LONG).show();
Intent I = new Intent(this, MainActivity.class);
startActivity(I);
}
liste.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
int id=ekle.get(i);
Intent gonder=new Intent(TamlisteActivity.this,KisigosterActivity.class);
gonder.putExtra("id",id);
startActivity(gonder);
}
});
}
}
ve KisiduzenleActivity:
public class KisiDuzenleActivity extends Activity {
private Veritabani2 veritabani2=new Veritabani2(this);
public void guncelle(int id,String ad,int cz,int yil, int ay){
SQLiteDatabase db=veritabani2.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("ad",ad);
cv.put("cz",cz);
cv.put("yil",yil);
cv.put("ay",ay);
db.update("KisiTablosu",cv,"_id"+"=?"+id,null);
db.close();
}
@Override
public void onBackPressed() {
Intent geri=new Intent(KisiDuzenleActivity.this,TamlisteActivity.class);
startActivity(geri);
finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kisi_duzenle);
final EditText ea=(EditText)findViewById(R.id.adguncel);
final EditText ec=(EditText)findViewById(R.id.cguncel);
final Calendar c=Calendar.getInstance();
final int ay=c.get(Calendar.MONTH)+1;
final int yil=c.get(Calendar.YEAR);
final String ad=ea.getText().toString();
final ImageView i=(ImageView)findViewById(R.id.off);
i.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int cuz = 0;
if (ec.length() < 1) {
ec.requestFocus();
ec.setError("Bu kısım boş bırakılamaz");
} else {
cuz = Integer.parseInt(ec.getText().toString());
if (cuz < 1 || cuz > 30) {
ec.requestFocus();
ec.setError("30 dan büyük 1 den küçük olamaz");
} else {
String ad = "ben";
Calendar cal = Calendar.getInstance();
int yil = cal.get(Calendar.YEAR);
int ay = cal.get(Calendar.MONTH) + 1;
final int id=getIntent().getExtras().getInt("veri2");
try {
guncelle(id,ad, cuz, yil, ay);
} finally {
veritabani2.close();
}
Intent i = new Intent(KisiDuzenleActivity.this, TamlisteActivity.class);
startActivity(i);
finish();
}
}
}
});
}
Bu sorunlar neden oluyor ?
İlgilenen herkese teşekkürler.