更新ArrayList中的元素

时间:2014-03-05 06:32:08

标签: java arraylist

我在更新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
        }
    }
}

1 个答案:

答案 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上做了什么)