2016-01-25 2 views
1

У меня есть функция, из которой я динамически отображаю макет. В нем отображается событие, созданное на один день. В качестве параметра он имеет время начала и окончания. Для целей тестирования я использовал массив float с некоторыми значениями. Но теперь я хочу добавить значения времени начала и конца времени для этой функции, которую я получаю от другого действия. Я хочу, чтобы они динамически использовались в массиве и использовали его в функции.Как добавить элементы в целочисленный массив динамически?

Ниже моя функция:

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


    } 
} 

Пожалуйста, помогите ..

Edit:

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

Я получаю ошибку на с [я], как тип массива ожидается найден 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

+0

Вместо использования массива ArrayList. Вы также можете преобразовать свой существующий массив в arraylist, а затем добавить новый элемент в arraylist –

+0

Array - статический экземпляр. Вы не можете установить для него новую длину. Все, что вы можете сделать, это создать новый массив с новой длиной. Или, например, используйте List. – Majestic

+0

Спасибо за ответ. Я попытался использовать список массивов следующим образом: ArrayList s = new ArrayList (); s.add (fromMinutes); ArrayList e = new ArrayList (); e.add (toMinutes); ---------------- Но я не уверен, как я могу использовать элементы из массива в качестве параметра для функции? Как я использую начало Times и End Times в вышеприведенной функции. И что я хочу использовать для дальнейшего расчета. Можете ли вы показать мне код, пожалуйста. @Vivek Mishra –

ответ

1

Вы должны использовать ArrayList вместо массива, динамически добавлять, удалять, заменять операции.

+0

Как я могу использовать в качестве параметра функцию? @Ashutosh Verma –

+0

@ user5669913 это может помочь вам проверить мой ответ, как передать параметр – mmuzahid

0

Вместо массива использовать arraylist. Вы также можете преобразовать свой существующий массив в arraylist, а затем добавить новый элемент в arraylist.

Вы можете добавить ваши данные массива в ArrayList на одном дыхании, как у вас уже есть массивы, созданные как этот

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

Чтобы получить данные из ArrayList то же, что из массива с небольшим изменением.

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

А чтобы получить данные просто использовать

s.get(i); 
+0

Могу ли я использовать s.get (i) в качестве параметра для функции? Я не уверен в этом. –

+0

да, вы можете это сделать, так как вы также делаете это с массивом. Поскольку ваши параметры находятся в float, вы должны приложить его к float или создать arraylist типа float –

+0

Нет. Я хочу, чтобы Array List целочисленного типа. Я все еще смущен, вы можете показать мне, как использовать от минут в качестве параметра функции. @ Vivek Misshra –

Смежные вопросы