どこが間違っているのか分かりません。私のリストビューをクリックすると、行を削除した後、アプリケーションは終了します。以下は、私のソースコードです:アンドロイドアプリで行を削除した後のカーソル例外
private void showlist() {
ArrayList<ContactListItems> contactList = new ArrayList<ContactListItems>();
contactList.clear();
mydb = new DBHelper(this);
String query = "SELECT * FROM DBbooking ";
Cursor c1 = mydb.selectQuery(query);
if (c1 != null && c1.getCount() != 0) {
if (c1.moveToFirst()) {
do {
ContactListItems contactListItems = new ContactListItems();
contactListItems.setSlno(c1.getString(c1
.getColumnIndex("id")));
contactListItems.setName(c1.getString(c1
.getColumnIndex("Firstname")));
contactListItems.setPhone(c1.getString(c1
.getColumnIndex("Lastname")));
contactList.add(contactListItems);
} while (c1.moveToNext());
}
}
c1.close();
ContactListAdapter contactListAdapter = new ContactListAdapter(
Bookings.this, contactList);
lvCustomList.setAdapter(contactListAdapter);
lvCustomList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// int id_To_Search = arg2;
Bundle dataBundle = new Bundle();
dataBundle.putInt("id", arg2);
Intent intent = new Intent(getApplicationContext(), Details.class);
intent.putExtras(dataBundle);
startActivity(intent);
}
});
クリックされた項目に ます。public void dislplaybookingsを見てコードの一部()
と呼ば削除public Cursor getData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from DBbooking where id="+id+"", null);
return res;
}
選択のための{
Bundle extras = getIntent().getExtras();
int passedvaluefromformeractivity = extras.getInt("id");
int realvalue = passedvaluefromformeractivity+1 ;
mydb = new DBHelper(this);
Cursor rs = mydb.getData(realvalue);
rs.moveToFirst();
String trn = rs.getString(1);
Firstname.setText((CharSequence) trn);
Firstname.setFocusable(false);
Firstname.setClickable(false);
myDBHelpe
public void deletdata(){
mydb = new DBHelper(this);
String trnid= "" + Trans_ID.getText();
mydb.deleteTitle(trnid);
Toast.makeText(Details.this, "Deleted", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getApplicationContext(),Bookings.class);
startActivity(intent);
}
削除
public boolean deleteTitle(String TransID) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(DBbooking_TABLE_NAME, DBbooking_COLUMN_TRANS_ID + "=" + TransID, null) > 0;
}
私のlogcat。
FATAL EXCEPTION: main E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
私は、初心者のために、任意の行
'E /何かで始まるあなたのlogcatでより多くのエラー行があるはずです:SomeError' は、メインポストにそれらを編集してください。 –