2012-09-18 21 views
1

我有onItemClick侦听器,我想使用id值。 但它与位置具有相同的价值。如何设置onItemClick的行ID从

public void onItemClick(AdapterView<?> a, View view, int position, long id) { 
    DBh.something(id); 
} 

进出口使用自定义的ArrayAdapter类似于thatone: onItemClickListener with custom adapter and listview

我试图用row.setId(),但它的INT不长。

+0

你可以请你出示你的完整代码吗? –

+0

arrayadapter中没有id,只有位置 – njzk2

回答

5

我不要求为什么你要做到这一点(你可能有你的原因),所以将只解释如何做到这一点。因为你已经实现定制适配器,所有你需要做的是重写getItemId方法:

@Override 
public long getItemId(int position) { 
    //return ID based on the position 
    return ...; 
} 

那么这个值将被传递到接收项ID其他方法。请注意,如果您知道如何从头寸获取ID,那么您可以直接在onItemClickListener中执行该操作,因为头寸已经传入头寸。

1

你想要达到的究竟是什么?在您的适配器中,您可以覆盖“getItemId(int position)”,并使其返回任何您想要给该项目的ID。但为什么使用id值,为什么不简单地使用该位置?

+0

即时通讯使用时间戳作为全局id,我需要找到单击元素的时间戳值。 – Paxmees

+0

那么为什么你不添加时间戳作为元素中的一个字段? – Christine

+0

我建议覆盖getItemId,并且我建议使用“postion”而不是“itemid”。那怎么不是答案? – Christine