0

我将 listview 与我的自定义 baseAdapter 一起使用。我想知道 setTag 和 getTag 的正确用法。

当我在 getView 函数中时,我正在执行 convertView.setTag(specificId)。因此,如果有人点击一个项目,我会执行一个 getTag,这将是被点击项目的特定 ID,因此我可以使用该 ID 来做更多的事情。为每个项目在该标签中存储自定义数据的排序

这是使用 setTag 的正确方法吗?如果没有,那么我需要一种方法来识别单击的项目。位置不会那么有用,否则我需要一个静态数组,其中包含位置和特定 ID 之间的映射(我发现它效率低下)

如果我错了请纠正我谢谢

4

1 回答 1

0

实际上你不需要使用 setTag() 和 getTag(),如果你只关心 ListView 项目的点击。

使用ListView.setOnItemClickListener将做的位置参数。

既然你说:

Position won't be that helpful

你的意思是positiongetView()中的参数?因为您单击 ListView 项目的子视图(如文本/按钮)。

如果是,那么这position不能用于获取单击项的数据,因为它是新创建项的位置,而不是单击项的位置。

这样,您就可以正确地使用标签来识别您单击的确切 ListView 项目的子视图。

解决此问题的另一种方法是:

使用以下方法获取您单击的子视图的父视图位置(列表中的项目位置):

int clickedItemPosition = yourListView.getPositionForView((View) childView.getParent());
于 2012-09-14T06:06:36.823 回答