"int"和"long"参数有什么区别 onItemClick in Android



在实现OnItemClickListener时,必须在OnItemClickListener接口中实现onItemClick方法,该方法是一个抽象方法。在onItemClick方法中有四个参数。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Toast.makeText(this, "Clicked on : " + arg2 + " long arg : " + arg3, 
                   Toast.LENGTH_LONG).show();
}

我需要知道的是最后两个参数(int arg2, long arg3)之间的区别。正如您在我的代码中看到的,当我尝试Toast时,我得到了两个参数相同的值。

我也有同样的问题。然而,这里的答案并不是很有帮助。我不支持自己去查找答案,特别是当所谓的文档如此不清楚的时候。不过,我确实自己查了一下,下面是我的发现。

int值是视图父视图中的位置。对于ListView,它是行号。第一行是位置0,第二行是位置1,第三行是位置2,以此类推。注意,如果你的ListView有一个标题视图(就像你做的ListView.addHeaderView(View)一样),那么标题视图将是位置0,实际的行将从1开始编号。

有时long值与int位置相同,有时不同。如果你使用的是ArrayAdapterSimpleAdapter,那么它们是相同的(除非有一个标题视图,然后它们被一个关闭)。对于CursorAdapter(以及SimpleCursorAdapter), long id返回表的行id,即_id。它是long而不是int,因为理论上数据库可以拥有比int所能容纳的行数更多的行,而ListView则不能。

这里有一些其他相关的答案:

  • https://stackoverflow.com/a/25622142/3681880
  • https://stackoverflow.com/a/9863279/3681880
  • https://stackoverflow.com/a/12966006/3681880
  • https://stackoverflow.com/a/24531354/3681880

考虑阅读文档。

int为视图位置,long为项目ID。

(我们不能看到你得到相同的值;我们只看到你的代码,而不是你的屏幕。

给出的答案很有帮助。但是我需要的答案,我是说我想要的确切答案是我自己贴出来的。但这不会增加我的"接受水平"。所以我想把这个链接作为这个问题的答案。这是答案的链接

int value表示项目位置 value表示项目Id。

public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)
parent      The AdapterView where the click happened.
view        The view within the AdapterView that was clicked
            (this will be a view provided by the adapter)
position    The position of the view in the adapter.
id          The row id of the item that was clicked.

在我看来,通过位置,您可以使用适配器的getItem(position)获得行项。因此,位置表示适配器中的数据位置。

对于id参数,我认为它是一个帮助方法,如你所知,适配器中的数据总是一个记录器。一般来说,记录器应该有一个id列(类似于数据库id)。编码时,您可以通过位置获取项目,然后获取项目的id(如果项目有id)。但是您可以直接使用"id"参数获得这样的"id"。你可能注意到:位置是"int"类型,而"id"是"long"类型。

顺便说一下,如果您想使用id参数,您必须在适配器中实现getItemId()方法。

相关内容

  • 没有找到相关文章

最新更新