我有要求仅基于特定条件,我需要初始化类型类的数组。所以我在类型类的数组中尝试插入switch语句,如下所示。
for (int i=0;i <testChildData.size();i++ )
{
switch (testChildData.get(i)) {
SyncPreferenceItem[] syncCategoryList = {
case "VISIT":
new SyncPreferenceItem(R.drawable.sync_visit, R.string.PrefVisits,
SynchronizationManager.SYNC_CATEGORY_TYPE.VISITS);
break;
case "CUSTOMERS":
new SyncPreferenceItem(R.drawable.sync_customer, R.string.Customers,
SynchronizationManager.SYNC_CATEGORY_TYPE.CUSTOMERS);
};
}
}
但是我收到了错误。能不能指出我正确的方向或任何其他相同的逻辑。谢谢
答案 0 :(得分:3)
假设:对于每个值,您将添加SyncPreferenceItem
的对象。
您可以在第二个案例陈述后添加 break
语句。即使这不是一个要求,因为在该案例陈述之后你还没有其他任何东西。但是可以避免将来的错误。
声明并初始化for循环外的数组,并使用switch添加对象。
syncCategoryList = new SyncPreferenceItem[testChildData.size()];
for (int i=0;i <testChildData.size();i++ ) {
switch (testChildData.get(i)) {
case "VISIT":
syncCategoryList[i] = new SyncPreferenceItem(R.drawable.sync_visit, R.string.PrefVisits,
SynchronizationManager.SYNC_CATEGORY_TYPE.VISITS);
break;
case "CUSTOMERS":
syncCategoryList[i] = new SyncPreferenceItem(R.drawable.sync_customer, R.string.Customers,
SynchronizationManager.SYNC_CATEGORY_TYPE.CUSTOMERS);
break;
}
}
如果您不确定要在for循环中创建多少个对象,请使用ArrayList而不是SyncPreferenceItem
的简单数组;
List<SyncPreferenceItem> syncCategoryList = new ArrayList<>();
for (int i=0;i <testChildData.size();i++ ) {
switch (testChildData.get(i)) {
case "VISIT":
syncCategoryList.add(new SyncPreferenceItem(R.drawable.sync_visit, R.string.PrefVisits,
SynchronizationManager.SYNC_CATEGORY_TYPE.VISITS));
break;
case "CUSTOMERS":
syncCategoryList.add(new SyncPreferenceItem(R.drawable.sync_customer, R.string.Customers,
SynchronizationManager.SYNC_CATEGORY_TYPE.CUSTOMERS));
break;
}
}
答案 1 :(得分:1)
结构错误,因为正确的结构将是:
SyncPreferenceItem[] syncCategoryList = new SyncPreferenceItem [testChildData.size];
for (int i=0;i <testChildData.size();i++ ) {
switch (testChildData.get(i)) {
case "VISIT":
syncCategoryList[i] = new SyncPreferenceItem(R.drawable.sync_visit, R.string.PrefVisits,
SynchronizationManager.SYNC_CATEGORY_TYPE.VISITS);
break;
case "CUSTOMERS":
syncCategoryList[i] = new SyncPreferenceItem(R.drawable.sync_customer, R.string.Customers,
SynchronizationManager.SYNC_CATEGORY_TYPE.CUSTOMERS);
break;
}
}
有以下几点值得注意:
SyncPreferenceItem
类型。testChildData.size
。ArrayList
。VISIT
和CUSTOMERS
。如果还有其他内容,那么还需要一些代码来处理这个默认情况。