我想提出兩個值到使用列表和光標從SQLite數據庫一個微調行中,有我的代碼:CursorIndexOutOfBoundsException?
放入數據列表:
public List<String> getAllLabelsServer(){
List<String> labels = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT ip FROM " + ServerEntry.TABLE_NAME;
String description = "SELECT description FROM " + ServerEntry.TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
Cursor cursor1 = db.rawQuery(description, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
String multiRow = cursor.getString(0) + " - " + cursor1.getString(0);
labels.add(multiRow);
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning lables
return labels;
}
從列表中添加數據,以微調:
private void loadSpinnerDataCommand() {
// database handler
DbHelper db = new DbHelper(getApplicationContext());
// Spinner Drop down elements
List<String> labels = db.getAllLabelsCommand();
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, labels);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinnerCommand.setAdapter(dataAdapter);
}
但是,當我試圖讓cursor1.getString(0)
有一個錯誤:
Process: com.example.admin.ssh, PID: 14389 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.admin.ssh/com.example.admin.ssh.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6186) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2 at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460) at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) at com.example.admin.ssh.data.DbHelper.getAllLabelsServer(DbHelper.java:108) at com.example.admin.ssh.MainActivity.loadSpinnerDataServer(MainActivity.java:222) at com.example.admin.ssh.MainActivity.onCreate(MainActivity.java:86) at android.app.Activity.performCreate(Activity.java:6684) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6186) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
我該如何解決這個錯誤?
建議:使用ListView和數據庫時使用CursorAdapter –