如何动态地在整数数组中添加元素?

时间:2016-01-25 06:08:03

标签: java android arrays function dynamic-programming

我有一个动态显示布局的功能。它显示了为一天创建的事件。它有一个开始时间和结束时间作为参数。出于测试目的,我使用了带有一些值的浮点数组。但是现在我想将开始时间和结束时间值添加到此函数中,这是我从另一个活动中获取的。我希望它们动态地在数组中使用并在函数中使用它。

以下是我的功能:

 private void createEvent(LayoutInflater inflater, ViewGroup dayplanView,float startTime, float endTime) {
    View eventView = inflater.inflate(R.layout.event_view, dayplanView, false);
    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) eventView.getLayoutParams();

    float margin = (startTime * 60);
    float distance = (endTime - startTime);
    float height = (distance * 60);

    int result = ((int)margin);
    int result1 = ((int)height);

    layoutParams.topMargin = dpToPixels(result+10);
    layoutParams.height = dpToPixels(result1);

    eventView.setLayoutParams(layoutParams);
    dayplanView.addView(eventView);
}

我在onCreate视图中调用它:

 ViewGroup dayplanView = (ViewGroup)view.findViewById(R.id.hoursRelativeLayout);


        float[] startTimes = new float[] {2.5f,8f,4f,11f,5f,8.5f,12.3f,15.3f,21f,1f};
        float[] endTimes = new float[] {3f,9f,7f,12.5f,7.5f,11f,1.5f,16f,22f,2f};


        for(int i = 0; i < s.size(); i++) {
            createEvent(inflater, dayplanView, startTimes[i], endTimes[i]);
        }

我从几分钟到几分钟就获得了onActivity结果,这是我在数组和函数中使用的方法:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    // check if the request code is same as what is passed  here it is 2
    if(requestCode==1) {

        fromMinutes = data.getIntExtra("fromMinute",0);
        toMinutes = data.getIntExtra("toMinute",0);


    }
}

请帮助..

修改:

ArrayList<Integer> s = new ArrayList<Integer>();
        s.add(fromMinutes);

        ArrayList<Integer> e = new ArrayList<Integer>();
        e.add(toMinutes);


        for(int i = 0; i < s.size(); i++) {
            createEvent(inflater, dayplanView,s[i], e[i]);
        }

我在s [i]上遇到错误,因为数组类型需要找到java.util.array列表。

private void createEvent(LayoutInflater inflater, ViewGroup dayplanView,int fromMinutes, int toMinutes) {
        View eventView = inflater.inflate(R.layout.event_view, dayplanView, false);
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) eventView.getLayoutParams();

        float margin = (fromMinutes * 60);
        float distance = (fromMinutes - toMinutes);
        float height = (distance * 60);

        int result = ((int)margin);
        int result1 = ((int)height);

        layoutParams.topMargin = dpToPixels(result+10);
        layoutParams.height = dpToPixels(result1);

        eventView.setLayoutParams(layoutParams);
        dayplanView.addView(eventView);
    }

这是对的吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

您应该使用ArrayList而不是Array来动态添加,删除和替换操作。

答案 1 :(得分:0)

而不是数组使用arraylist。您也可以将现有数组转换为arraylist,然后将新元素添加到arraylist。

您可以一次性将数组数据添加到arraylist,因为您已经创建了像这样的数组

List<Integer> temp = Arrays.asList(speciesArr);

要从arraylist获取数据,它与稍微修改的数组相同。

ArrayList<Integer> s = new ArrayList<Integer>(); 
s.add(fromMinutes); 

要获取数据,只需使用

s.get(i);