从列表视图获取价值而非按位置获取价值

时间:2015-10-21 07:05:24

标签: android listview

也许很容易,但我很难解决这个问题。所以我在列表视图中有项目,以下代码是:

private List<Item> loadItem(){

    itemEntityList = new ArrayList<Item>();
    Item item1 = new Item();
    item1.setId(1);
    item1.setCategoryId(1);
    item1.setProductName("Blopress 8mg");
    item1.setPrice("10000");
    itemEntityList.add(item1);

    Item item2 = new Item();
    item2.setId(2);
    item2.setCategoryId(3);
    item2.setProductName("Blopress 16mg");
    item2.setPrice("12000");
    itemEntityList.add(item2);

    Item item3 = new Item();
    item3.setId(3);
    item3.setCategoryId(2);
    item3.setProductName("Celebrex 100mg");
    item3.setPrice("15000");
    itemEntityList.add(item3);

    Item item4 = new Item();
    item4.setId(4);
    item4.setCategoryId(1);
    item4.setProductName("Celebrex 200mg");
    item4.setPrice("17000");
    itemEntityList.add(item4);

return itemEntityList;
}

我希望当我点击列表查看其Toast消息Id。我试过这个但是它的listview的吐司位置。我想干什么我不是位置,有什么建议吗?

    listViewCatalog.setOnItemClickListener(new AdapterView.OnItemClickListener() {

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


            Toast.makeText(CatalogActivity2.this, position+" _", Toast.LENGTH_LONG).show();


        }
    });

1 个答案:

答案 0 :(得分:3)

适配器中有getItemId()方法。像这样的东西:

@Override
public long getItemId(int position) {
    return mObjects.get(position).getId();
}

如果您在适配器中实现了这样的方法。您可以随时拨打电话,并获取您的项目ID:

yourAdapter.getItemId(position);

UPDATE 正如@pskink所提到的,你可以使用onItemClick

的最后一个参数
@Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {...}

是id。