当我们实现OnItemClickListener时,我们必须实现onItemClick方法,它是OnItemClickListener接口中的抽象方法.在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开始编号.
有时,长的值与int位置相同,有时它是不同的.如果您使用的是ArrayAdapter或SimpleAdapter,那么它们是相同的(除了有一个标题视图,然后它们被一个关闭).对于CursorAdapter(并因此SimpleCursorAdapter),long id返回表的行ID,即_id.这是一个很长的而不是一个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