从Listview获取数据?怎么样?

时间:2014-01-14 22:56:17

标签: java android database listview android-listview

我有一个数据库(db)来自我获取的值(名称,电子邮件地址,电话号码等),我将其放入列表并显示在ListView中。如果我点击一个项目,我可以从点击的项目中获取整个数据吗?因为我需要前。电子邮件地址发送电子邮件我可以从项目中提取数据,因为从数据库获取数据时是“客户”类型。

List list = db.getAllClients();

    final ListView listview = (ListView) findViewById(R.id.listView_ID);
    listview.setClickable(true);

    ArrayAdapter adapter = new ArrayAdapter(this,
            android.R.layout.simple_list_item_1, list);

    listview.setAdapter(adapter);
    registerForContextMenu(listview);

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> parentAdapter, View view,
                int position, long id) {

                            // some code


        }
    });

3 个答案:

答案 0 :(得分:1)

您无需从ListView本身提取数据,只需提取用于填充列表的Array数据。

由于onItemClick(...)为您提供了所点击商品的position,您可以......

  • 使用ArrayAdapter获取商品:

    adapter.getItem(position)

  • 从原始列表中获取数据:

    list.get(position)

在上述任何一种情况下,由于您是从匿名内部类(OnItemClickListener)检索数据,因此有问题的adapterlist必须是实例变量,不是局部变量(即将adapterlist定义为您班级的一部分,高于您的所有方法。)

答案 1 :(得分:0)

您可以在ArrayAdapter中按位置AdapterView.OnItemClickListener获取数据:

((ArrayAdapter) listview.getAdapter()).getItem(position);

答案 2 :(得分:0)

我可以看到你的代码,你得到了对象列表List<Client>所以

 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> parentAdapter, View view,
            int position, long id) {

                       Client client = list.get(position) ;


    }
});

因为该位置是指列表中所选的索引