1

希望你能帮我解决这个问题。我想从 sqlite 获取列表视图中所选项目的 rowId,以便我可以将值传递给另一个活动。

我已经用我的 sqlite 表中的信息为 listview 提供了信息,并在 listview 中使用 onClickedItem 并使用 pos + 1 来获取 id,但我不想要这个解决方案,因为每当我从 listview 中删除一个项目时,我将无法获得正确的rowId 来自数据库本身...这是我的代码:

在我的 DBhelper 中:

public List<String> getSYAList() {
         List<String> List = new ArrayList<String>();
         try {
            // Select All Query
            String selectQuery = "SELECT  * FROM " + TABLE_SYA ;
            Cursor c = ourDatabase.rawQuery(selectQuery, null);

            // looping through all rows and adding to list
            if (c.moveToFirst()) {
                do {
                    List.add((c.getString(0)) + " " +(c.getString(1)) + " "+ (c.getString(2)));

                } while (c.moveToNext());
            }
     } catch (Exception e) {
        Toast.makeText(ourContext, "Error encountered.",
                Toast.LENGTH_LONG).show();
    }
          return List;
    }  

在我的活动中:

private void loadSYA() { // TODO 自动生成的方法存根

    final DBhelper entry = new DBhelper(this);
    entry.open();

    final List<String> sya = entry.getSYAList();
        if(sya.size()>0) // check if list contains items.
        {    

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(SYA.this,android.R.layout.simple_dropdown_item_1line, sya);
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);



    sqlSYA.setAdapter(arrayAdapter);
    sqlSYA.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {


            Intent i = new Intent(SYA.this,SYAInfo.class);
            Bundle b = new Bundle();
            b.putInt("id", (int)position + 1);
            i.putExtras(b);
            startActivity(i);   

            }
        });   }  
             else 
             {
                Toast.makeText(SYA.this,"No items to display",1000).show();
             }  


    entry.close(); 

}

我真的希望你们任何人都可以帮助我找到解决方案。提前谢谢你们!

4

0 回答 0