我想在我的ListView中使用OnItemClickListener时从数据库中获取项目,但我不知道如何执行该操作的语法。在Android中使用OnItemClickListener从SQLite数据库获取项目
另一方面,我必须实现onListItemClick方法,我尝试使用,但我强制关闭,也许我的语法只是错误的。
你可以给代码建议如何做到这一点。因为这个,我感到沮丧。我真的很感谢那些回答这个问题的人。
这里是我的代码,请给意向onItemClick mehod:
public class HotelList extends ListActivity{
hotelHelper dbHotelHelper;
protected Cursor cursor;
protected ListAdapter adapter;
ListView numberList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.hotellist);
numberList = (ListView)findViewById(android.R.id.list);
numberList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
String query = "SELECT lat, long FROM hoteltbl WHERE name = '" + selectedItem[THIS IS THE PROBLEM: the syntax to get selected item] + "'";
SQLiteDatabase dbs = dbHotelHelper.getReadableDatabase();
Cursor result = dbs.rawQuery(query, null);
result.moveToFirst();
double lat = result.getDouble(result.getColumnIndex("lat"));
double longi = result.getDouble(result.getColumnIndex("long"));
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?f=d&saddr=&daddr="+lat+","+longi));
startActivity(intent);
}
});
dbHotelHelper = new hotelHelper(this);
try{
dbHotelHelper.createDataBase();
}
catch (Exception ioe){
Log.e("err","Unable to create database");
}
view();
}
private void view() {
// TODO Auto-generated method stub
SQLiteDatabase db = dbHotelHelper.getReadableDatabase();
try{
cursor = db.rawQuery("SELECT * FROM hoteltbl", null);
adapter = new SimpleCursorAdapter(
this,
R.layout.hotelview,
cursor,
new String[]{"name"},
new int[] {R.id.hotelname}
);
numberList.setAdapter(adapter);
}
catch (Exception e){
Log.e("error",e.toString());
}
}
}
这里的logcat的:
11-28 20:44:10.449: ERROR/AndroidRuntime(856): FATAL EXCEPTION: main
11-28 20:44:10.449: ERROR/AndroidRuntime(856): java.lang.NullPointerException
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at com.william.placefinder.HotelList$1.onItemClick(HotelList.java:40)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.widget.ListView.performItemClick(ListView.java:3382)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.os.Handler.handleCallback(Handler.java:587)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.os.Handler.dispatchMessage(Handler.java:92)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.os.Looper.loop(Looper.java:123)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at java.lang.reflect.Method.invoke(Method.java:521)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-28 20:44:10.449: ERROR/AndroidRuntime(856): at dalvik.system.NativeStart.main(Native Method)
可以请你发布你的logcat trace吗? – deepa
我认为它必须在此语法中编辑:String query =“SELECT lat,long FROM hoteltbl WHERE name ='”+ ** selectedItem [这是问题:获取选定项目的语法] ** +“'”; – forgiven24
上面的语法位于onItemClick方法,任何想法如何使“selectedItem”变量从数据库中获取数据? – forgiven24