在Android中使用OnItemClickListener从SQLite数据库获取项目

在Android中使用OnItemClickListener从SQLite数据库获取项目,android,sqlite,listview,syntax,onitemclicklistener,Android,Sqlite,Listview,Syntax,Onitemclicklistener,当我在ListView中使用OnItemClickListener时,我想从数据库中获取项,但我不知道如何使用语法 另一个说我必须实现onListItemClick方法,我尝试使用它,但我得到了强制关闭,也许我的语法是错误的 你能用代码给出建议吗。我为此感到沮丧。我真的很感谢你们回答这个问题 这是我的代码,请告诉我你的意图: public class HotelList extends ListActivity{ hotelHelper dbHotelHelper; protected Curs

当我在ListView中使用OnItemClickListener时,我想从数据库中获取项,但我不知道如何使用语法

另一个说我必须实现onListItemClick方法,我尝试使用它,但我得到了强制关闭,也许我的语法是错误的

你能用代码给出建议吗。我为此感到沮丧。我真的很感谢你们回答这个问题

这是我的代码,请告诉我你的意图:

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());
    }       
}

我希望您只将酒店名称加载到ListView中。 我认为您应该首先从listview中获取酒店名称(希望您获取的listview是正确的)。在您的
onItemClick(AdapterView arg0、View arg1、int arg2、long arg3)
中,首先添加此项

String selectedItem = (String) numberList.getItemAtPosition(arg2);

然后将其传递给您的select查询。

您可以发布您的logcat跟踪吗?我认为它必须使用以下语法进行编辑:String query=“select lat,long FROM hoteltbl WHERE name='”+selectedItem[这是问题:获取所选项目的语法]+“”;上面的语法位于onItemClick方法中,您知道如何使“selectedItem”变量从数据库获取数据吗?我认为您应该使用
String query=“SELECT lat,long from hoteltbl WHERE name=”+selectedItem[arg2]+“”将在该位置获取所选项目。答案为Thx。我只是实现了上面给出的语法,问题是如何声明变量selectedItem[args2]?我必须使用字符串还是字符?Buddy thx作为你的答案,它启发了我。我没有使用您提供的代码,但我使用了这个
long selectedItem=numberList.getItemIdAtPosition(arg2)和它的工作。
String selectedItem = (String) numberList.getItemAtPosition(arg2);