【发布时间】:2018-11-12 16:48:02
【问题描述】:
框架:
通过 Recyclerview 上的 onClicklistener,我将项目添加到 Arraylist。归根结底,我使用以下三行来完成:
int typeImage = mContext.getResources().getIdentifier("introcreeps", "drawable", mContext.getPackageName());
mDecklist.add(new Decklist(mData.get(position).getCardImage(),typeImage, "22", mData.get(position).getCardName(), "x1");
mRViewAdapterList.setCards(mDecklist);
问题:
使用另一个 OnclickListener,我想编辑 mDecklist 的元素。
我认为这应该是可能的
positionToEdit = mDecklist.indexOf(mData.get(position).getCardName());
mDecklist.set(positionToEdit, new Decklist(mData.get(position).getCardImage(),typeImage, "22", mData.get(position).getCardName(), "x2" ));
我知道positionToEdit = mDecklist.indexOf(mData.get(position).getCardName()); 显然是错误的。我必须传递什么样的对象才能找到正确的位置?
什么也不起作用:
CardNames 在我的 Arraylist 中将是不同的,因此我想通过使用它来找到位置。我也尝试使用整个 ArraylistObject 的东西,但这对我来说不起作用,比如:
positionToEdit = mDecklist.indexOf(Decklist(mData.get(position).getCardImage(),typeImage, "22", mData.get(position).getCardName(), "x1"));
更多信息:
以下是我的 Arraylist (Decklist) 的代码: 包 com.example.chris.projectartifact.b_deckbuilderTap;
公开课牌组{
private int CardImage;
private int TypeImage;
private String Cost;
private String Name;
private String Number;
public Decklist(int cardImage, int typeImage, String cost, String name, String number) {
/* Why is there no this. ? */
CardImage = cardImage;
TypeImage = typeImage;
Cost = cost;
Name = name;
Number = number;
}
public Decklist(String cost, String name, String number) {
Cost = cost;
Name = name;
Number = number;
}
public int getCardImage() {
return CardImage;
}
public void setCardImage(int cardImage) {
CardImage = cardImage;
}
public int getTypeImage() {
return TypeImage;
}
public void setTypeImage(int typeImage) {
TypeImage = typeImage;
}
public String getCost() {
return Cost;
}
public void setCost(String cost) {
Cost = cost;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
Number = number;
}
}
更多信息基于帖子问题: 为了让您了解我想要做什么,我将发布我使用 mData 和 mDecklist 的 Recyclerviews 的屏幕截图:
让我用颜色来解释一下:
- orange Recyclerview 使用 mData 来扩充 Recyclerview。基于 orange Recyclerview 中带圆圈的 green 按钮,我们将 mData 的值设置为一个名为 mDecklist 的新 Arraylist。
- mDecklist 在绿色 Recyclerview 中用于创建新值,因此我们可以将第一个 Recyclerview(橙色)中的项目添加到第二个 Recyclerview(绿色)
- 但它变得更加复杂!当我们在 Yellow 中使用 Spinners 时,Orange Recyclerview 正在从数据库中获取一个全新的 mData 文件。 这意味着这些位置(基本上)被覆盖了。
- 因此,get(position) 是不够的!#
- 每个 mDecklist 都将使用与 mData 中的卡片相同的名称(例如 CardName 是 Bloodseeker,也将在 mDecklist 中使用)。因此,我希望可以通过使用名称作为搜索参考,在 mDecklist 中找到 Object 的位置。
非常欢迎任何帮助! :)
【问题讨论】:
-
mData和mDeckList是否相同? -
mData 和 mDecklist 是两个不同的列表。但我使用 mData 的值来创建 mDecklist。如您所见,第一个值 (cardImage) 也用于 mData,但我在 mDecklist 中也需要它。所以不,它们不相同。
-
请查看我在帖子中所做的编辑。它应该更有说服力地解释这个问题。 :)
标签: android android-studio object arraylist indexof