List集合中的AarrayList的存取顺序为先进后出,即按顺序从前往后存,取时从后往前存。
我的需求是在pad上做一个聊天工具,服务器上由所有人的名字和pad id。我必须从服务器获取所有人的名字和每个人的pad id,然后各自存进ArrayList集合中,接下来把存着名字的集合对象传给用于显示数据的适配器中,点击每个名字对应的条目时,要通过position得到所对应的pad id,这时问题就来了,由于ArrayList先进后出的特点,listview显示的名字都是从集合中的最后一位开始向前显示的。所以通过position获取到的pad id和名字的对应正好相反。
解决方法:很简单既然名字都是倒着显示的,那我也倒着拿pad id。因为position和集合中对象位置都是从0开始的,所以list_padID每次要多减1,否则会拿错数据和角标越界,例如当position等于0时如果不减1就会角标越界。
receivePadNum = list_padID.get(list_padID.size() - (position+1));