我在更新arraylist中的元素时遇到问题。我有类ViewLabelINScreen
,我从这个类构建一个元素的arraylist,但是当我更新这个arraylist中的元素时,同一个对象中的另一个元素获取值Default。如何在不更改其他元素的情况下仅更改此元素。
我在不同的类中更改了这个元素,添加了这个元素,我需要这个数组列表静态。
ViewLabelINScreen:
public class ViewLabelINScreen {
public int xP;
public int yP;
public String nameLabel;
public int stringWidth4;
public int fontHeight;
public boolean stored;
public ViewLabelINScreen(int XP,int YP,String NameLabel,int StringWidth4 ,int FontHeight )
{
xP=XP; yP=YP; nameLabel=NameLabel;stringWidth4=StringWidth4;fontHeight=FontHeight;
}
//this contractor for change namelabel
public ViewLabelINScreen (String Namelabel)
{
nameLabel=Namelabel;
}
public ViewLabelINScreen () {
}
}
以下类将元素添加到arraylist中。
public class WgsGrid {
//Added by A.B
MapSelection mapSelection;
public static ArrayList<ViewLabelINScreen> INFOLable = new ArrayList<ViewLabelINScreen>();
for (int i4 = hMin; i4 <= hMax; i4++)
{
INFOLable.add(new ViewLabelINScreen(labelRectX, labelRectY - yOffset4, SetLabels.getYlabels()[counter2],stringWidth4,fontHeight));
}
}
此类 NeedChangeArrayList 更改元素:
class NeedChangeArrayList {
public void ChangeAraay()
{
if (WgsGrid.INFOLable.isEmpty() != true)
{
for (int s = 0; s < ylabels.length; s++)
{
WgsGrid.INFOLable.set(s, new ViewLabelINScreen(ylabels[s]));
}
//ylabels[s] string array get value from array and put in nameLabel
}
}
}
答案 0 :(得分:0)
您是否更改了数组列表中的所有nameLabel值?如果是这样,你可以在for循环中尝试这个:
for(int s =0; s< WgsGrid.INFOLable.size();s++){
WgsGrid.INFOLable.get(s).setNameLabel("whatever");
}
您需要为nameLabel创建一个setter方法。
public void setNameLabel(String nameLabel){
this.nameLabel = nameLabel;
}
(我已经从ylabels.length更改为arraylist的大小。不确定你在ylabels上做了什么)