如何获取listview中单击的列表项的SQLite列_id值

时间:2014-06-17 07:18:21

标签: android sqlite listview android-intent onitemclicklistener

我有一个显示列表的活动。该列表是从sqlite数据库中获取的数据填充的。我正在使用simpleCursorAdapter。单击列表中的项目时,我想转到另一个活动页面以显示有关单击列表项的更多详细信息。为此,我需要在数据库中给出的单击列表项的_id(主键),以便我可以使用该ID查询数据库,并在用户单击列表项时加载的下一个活动中显示更多详细信息。使用onItemClickListener,如何做到这一点?我很感激任何建议。提前谢谢!

2 个答案:

答案 0 :(得分:3)

将_id(主键)设置为列表项的ID:数据适配器

适配器:

@Override
public long getItemId(int position) {
    return position;//you can return your ID
}

的活动:

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //id == getItemId(int position);
        }
    });

也做:

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //listView.getAdapter().getItem(position) -> getId;
        }
    });

答案 1 :(得分:0)

您可以将意图传递给下一个活动:

          Intent intent = new Intent(this, your_next_activity.class);
            intent.putExtra("ID", id);
            startActivity(intent);

然后获取下一个活动(编辑)中的值:

         Intent intent = getIntent();
         int id= intent.getIntExtra("ID", 0);

然后你有了ID,你可以查询数据库:

        Cursor c = yourDBHelper.getAllDetailsMethod(); //method inside Your db-helper that gives You the cursor
        int rows = c.getCount();
        c.moveToFirst();

        for(int i=0;i<rows;i++){

            int db_id = c.getInt(0) //this belongs to the place where Your id is inside the db

           if(db_id==id){
               //here You can get all details you need

             break;//stop quering
           }else{

              c.moveToNext();
            }

        }

但是为了给你一个很好的解决方案,如果你告诉我们你到目前为止做了什么,那将会很好。