【发布时间】:2014-07-31 10:55:11
【问题描述】:
我有一个List 的卡片,Card 是一个类。我有三手牌,每手牌发四张牌。
在游戏里面onTouchEventMotionEvent.ACTION_UP里面的时候我要删除触摸卡,问题是:
如果一手牌的可用卡片ID如下:100,130,112,70,相应的indeces:0,1,2,3。当我想删除触摸的卡片时,索引会重新洗牌,例如,
(100,130,112,70)->(0,1,2,3) delete(1)==>130 will be deleted
(100,112,70)->(0,1,2) delete (2) ==> 70 will be deleted and NOT 112.
(100,112)->(0,1) delete (3) ==> an OUT_OF_BOUND exception will be thrown.
如何避免这种情况,我尝试通过参考列表中每个元素的比例来删除元素,但它很复杂。
【问题讨论】:
-
您应该按 id 删除卡。
-
@Luksprog 是的,但我也需要参考每个卡片索引
-
您应该使用 ArrayList
之类的 dataStructure 或类似的东西,它没有索引值关系。因为你的 cardID 本身就是独一无二的。因此,正如@Luksprog 所评论的那样,它将帮助您通过 ID 直接删除卡。我猜您目前正在使用数组作为数据结构。 -
你可以使用带有 int-key 的 HashMap 而不是 List
标签: java android list arraylist