首页 文章

从Listview获取数据?怎么样?

提问于
浏览
-3

我有一个数据库(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 回答

  • 1

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

    由于 onItemClick(...) 为您提供了点击项目的 position ,您可以......

    • 使用 ArrayAdapter 获取项目:

    adapter.getItem(position)

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

    list.get(position)

    在上述任何一种情况下,由于您是从匿名内部类( OnItemClickListener )检索数据,所以 adapterlist 需要是实例变量而不是局部变量(即将 adapterlist 定义为您的一部分)上课,高于你所有的方法) .

  • 0

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

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

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

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
        public void onItemClick(AdapterView<?> parentAdapter, View view,
                int position, long id) {
    
                           Client client = list.get(position) ;
    
    
        }
    });
    

    因为该位置引用了列表的选定索引

相关问题