我有一个动态显示布局的功能。它显示了为一天创建的事件。它有一个开始时间和结束时间作为参数。出于测试目的,我使用了带有一些值的浮点数组。但是现在我想将开始时间和结束时间值添加到此函数中,这是我从另一个活动中获取的。我希望它们动态地在数组中使用并在函数中使用它。
以下是我的功能:
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);
}
这是对的吗?
答案 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);