将记录ID加载到listview android

时间:2016-03-24 04:59:50

标签: android listview arraylist

我是Android的新手,我有一个简单的问题,我无法解决。我想要的是从数据库加载带有ID的listview,这样当我点击它时,它将匹配数据库中的id。这是我的代码:

public ArrayList<String> getAllContact() {
        ArrayList<String> array_list = new ArrayList<>();

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res = db.rawQuery("SELECT * FROM contacts", null);
        res.moveToFirst();

        while (res.isAfterLast() == false){
            array_list.add(res.getString(res.getColumnIndex(CONTACT_COLUMN_NAME)));
            res.moveToNext();
        }
        return array_list;
    }

    mydb = new DBHelper(this);
    ArrayList array_list = mydb.getAllContact();
    ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);
    obj = (ListView) findViewById(R.id.listView1);
    obj.setAdapter(arrayAdapter);
    obj.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        int id_in_db = position + 1
        Bundle dataBundle = new Bundle();
        dataBundle.putInt("cid", id_in_db);

        Intent intent = new Intent(getApplicationContext(), DisplayContact.class);
        intent.putExtras(dataBundle);
        startActivity(intent);
       }
    });

我可以从onclickitem获得的是列表中项目的位置,该位置与我在数据库中的记录不匹配。我可以看到.setTag方法可以解决方案,但我不知道如何在may代码中应用它。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

因此,您可以通过以下方式检索所选的商品ID:

int id_in_db = array_list.get(position).ID
Bundle dataBundle = new Bundle();
dataBundle.putInt("cid", id_in_db);

并在您的DisplayContact活动中从数据库加载它,或者您不仅可以传递整个项目的ID,因此无需再次加载它