У меня есть функция, из которой я динамически отображаю макет. В нем отображается событие, созданное на один день. В качестве параметра он имеет время начала и окончания. Для целей тестирования я использовал массив 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);
}
Правильно ли это?
Вместо использования массива ArrayList. Вы также можете преобразовать свой существующий массив в arraylist, а затем добавить новый элемент в arraylist –
Array - статический экземпляр. Вы не можете установить для него новую длину. Все, что вы можете сделать, это создать новый массив с новой длиной. Или, например, используйте List. – Majestic
Спасибо за ответ. Я попытался использовать список массивов следующим образом: ArrayList s = new ArrayList (); s.add (fromMinutes); ArrayList e = new ArrayList (); e.add (toMinutes); ---------------- Но я не уверен, как я могу использовать элементы из массива в качестве параметра для функции? Как я использую начало Times и End Times в вышеприведенной функции. И что я хочу использовать для дальнейшего расчета. Можете ли вы показать мне код, пожалуйста. @Vivek Mishra –