【问题标题】:How to add elements in an integer array dynamically?如何动态添加整数数组中的元素?
【发布时间】:2016-01-25 06:08:02
【问题描述】:

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

以下是我的功能:

 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);
    }

这样对吗??

【问题讨论】:

  • 使用arraylist代替数组。您还可以将现有数组转换为 arraylist,然后将新元素添加到 arraylist
  • Array 是一个静态实例。您不能为其设置新长度。您所能做的就是创建具有新长度的新数组。或者,例如,使用 List。
  • 感谢您的回复。我尝试使用这样的数组列表:ArrayList s = new ArrayList(); s.add(fromMinutes); ArrayList e = new ArrayList(); e.add(toMinutes); ----------------但我不确定如何将数组中的元素用作函数的参数?就像我在上面的函数中使用开始时间和结束时间一样。我也想用它来做进一步的计算。你能告诉我一个代码吗? @Vivek Mishra
  • 我知道数组列表的选项,但我无法对其进行编码。你能告诉我一个代码吗? @Majestic
  • 如果您想在多个方法中使用数组列表,请尝试将数组列表声明为类变量。

标签: java android arrays function dynamic-programming


【解决方案1】:

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

【讨论】:

  • 如何将其用作函数的参数?@Ashutosh Verma
  • @user5669913 它可以帮助您检查我的答案如何传递参数
【解决方案2】:

使用arraylist代替数组。您还可以将现有数组转换为 arraylist,然后将新元素添加到 arraylist。

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

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

从arraylist中获取数据与数组相同,稍作修改。

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

要获取数据,只需使用

s.get(i);

【讨论】:

  • 我可以使用 s.get(i) 作为函数的参数吗?我不确定。
  • 是的,您可以这样做,因为您也在使用数组进行操作。由于您的参数在浮点数中,您必须将其类型转换为浮点数或创建浮点类型的数组列表
  • 不,我想要整数类型的数组列表。我仍然很困惑,你能告诉我如何使用从分钟作为参数到函数吗?@ Vivek Misshra
  • 你的数据添加到arraylist了吗??
  • 是的,我添加了这样的:ArrayList s = new ArrayList(); s.add(fromMinutes); ArrayList e = new ArrayList(); e.add(toMinutes);
猜你喜欢
  • 2012-04-18
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 2012-10-30
相关资源
最近更新 更多