Я определил пользовательский класс itemAdapter, который заполняет мой ListView
из базы данных. В моей базе данных около 11 столбцов, из которых в моем списке отображаются только имя, адрес и другие соответствующие данные. Когда я нажимаю на элемент списка, мое приложение вызывает намерение и запускает другое действие, которое показывает все детали для строки базы данных, которая была нажата из списка. Но я не могу заставить rowid
сделать это. Мое приложение всегда выдает ошибку времени выполнения и запрашивает Force Close
. Ниже приведена часть моего onCreate()
метода:
ListView lv;
//other parts of code
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
listIntent = new Intent(garageFinder.this,list_detail.class);
Cursor c= (Cursor)itemsAdapter.getItem(position);
listIntent.putExtra("g",c.getInt(c.getColumnIndex("_id")));
startActivity(listIntent);
}
});
Для получения дополнений от намерения я использую это:
Bundle bundle= getIntent().getExtras();
int id = bundle.getInt("g");
Хорошо, я закрыл курсор, как и предлагалось, но некоторые проблемы все еще не устранены. Ниже приведен журнал ошибок:
02-18 17:25:43.718: ERROR/AndroidRuntime(526): FATAL EXCEPTION: main
02-18 17:25:43.718: ERROR/AndroidRuntime(526): java.lang.ClassCastException: java.lang.Integer
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at car_app.garage.garageFinder$1.onItemClick(garageFinder.java:82)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.widget.ListView.performItemClick(ListView.java:3382)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.os.Handler.handleCallback(Handler.java:587)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.os.Handler.dispatchMessage(Handler.java:92)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.os.Looper.loop(Looper.java:123)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at java.lang.reflect.Method.invokeNative(Native Method)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at java.lang.reflect.Method.invoke(Method.java:521)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-18 17:25:43.718: ERROR/AndroidRuntime(526): at dalvik.system.NativeStart.main(Native Method)