Я хотел узнать, как использовать sqlite
в android, поэтому я использовал следующий код на веб-сайте учебников, но когда я его запустил, если я удалю первую запись в listview
следующей записи дастОшибка при удалении элемента из списка в android
android.database.CursorIndexOutOfBoundsException: индекс -1 запрошенного, с размером 0 в
DisplayContact
классе.
Так что я хотел знать, как это исправить, я не знаю, есть ли проблема в списке или в arraylist.
Заранее благодарен.
Вот код, который показывает ошибку
Bundle extras = getIntent().getExtras();
if (extras != null)
{
int Value = extras.getInt("id");
if (Value > 0)
{
Cursor rs = mydb.getData(Value);
id_To_Update = Value;
if (rs != null && rs.getCount() > 0)
{
rs.moveToFirst();
}
String dat = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_DATE));
String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));
String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));
String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));
String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));
if (!rs.isClosed())
{
rs.close();
}
А вот код для удаления записи
case R.id.Delete_Contact: AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.deleteContact)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
mydb.deleteContact(id_To_Update);
Toast.makeText(getApplicationContext(), "Deleted Successfully", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{ }
}
);
AlertDialog d =builder.create();
d.setTitle("Are you sure?");
d.show();
return true;
default:
Это выход LogCat 05-20
12:59:33.953 E/AndroidRuntime(25513): Process: com.myelse.sqlcontacts, PID: 25513
05-20 12:59:33.953 E/AndroidRuntime(25513): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myelse.sqlcontacts/com.myelse.sqlcontacts.DisplayContact}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 0
05-20 12:59:33.953 E/AndroidRuntime(25513): at com.myelse.sqlcontacts.DisplayContact.onCreate(DisplayContact.java:51)
Редактировать: это код для arraylist и arrayadapter в mainactivity
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mydb = new DBHelper(this);
ArrayList arraylist = mydb.getAllContacts();
arrayadapter= new ArrayAdapter (this, android.R.layout.simple_list_item_1 ,arraylist);
arrayadapter.notifyDataSetChanged();
obj = (ListView) findViewById(R.id.listView1);
obj.setAdapter(arrayadapter);
obj.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
int id_to_search=arg2+1;
Toast.makeText(getApplicationContext(), id_to_search + "" , Toast.LENGTH_SHORT).show();
Bundle dataBundle = new Bundle();
dataBundle.putInt("id", id_to_search);
Intent intent = new Intent(getApplicationContext(), DisplayContact.class);
intent.putExtras(dataBundle);
startActivity(intent);
arrayadapter.notifyDataSetChanged();
}
}
);
}
я предполагаю, что вам нужно повторно загрузить массив, а затем обновить ListAdapter, потому что данные изменились. – andre3wap
Я попытался вызвать arraylist, который из другого класса дал мне nullpointerexception Я не знаю, как одновременно удалить из базы данных и arraylist – shahawi273
мы можем увидеть код для 'ArrayList' – andre3wap