我有3个字符串列表,我想将所有值添加到菜单,但它给出的错误是“索引0无效,大小为0”。简而言之,菜单为空,我该如何添加它们?
private List<List<Restaurant.Menu>> menus = new ArrayList<>();
ArrayList<String> MenuName = new ArrayList<>();
ArrayList<String> FoodName = new ArrayList<>();
ArrayList<String> FoodPrice = new ArrayList<>();
//I get values in DB. DB is full.
MenusName = tinydb.getListString("MenuName");
FoodName = tinydb.getListString("FoodName");
FoodPrice = tinydb.getListString("FoodPrice");
int restaurantCounter = 0;
int menuCounter = 0;
for (int j = 0; j < MenusName.size(); j++)
{
menus.get(restaurantCounter).get(j).name = MenusName.get(j))
}
示例,我为每个值创建了它们,它可以工作,但如果字符串很长,它会强制应用,我等待10秒。这个过程。我需要有效的方法。提前谢谢。
menus.get(resCounter).add(new Restaurant.Menu());
menus.get(resCounter).get(menuCounter).foods.add(new Restaurant.Food());
.
.
menus.get(resCounter).get(menuCounter).name = MenuName.get(i));
menus.get(resCounter).get(menuCounter).foods.get(foodCounter).name = FoodName.get(i);
menus.get(resCounter).get(menuCounter).foods.get(foodCounter).price = FoodPrice.get(i);
答案 0 :(得分:0)
您似乎在此处将数组与列表混淆。一旦初始化,数组具有固定的大小,列表则没有。您需要使用menus
menus.add(/*Add Menu Object here*/);
列表中添加内容
答案 1 :(得分:0)
您还没有向menus
添加任何值。因此该对象在索引0处不包含值。这可能是一个原因。
答案 2 :(得分:0)
我找不到解决方案所以我改变了结构。我在餐馆里得到了所有字符串,并且在存储之前我使用gson转换它们。你也可以为每个字符串使用gson。这是相同的逻辑。
Gson gson = new Gson();
ArrayList<String> gsonString = new ArrayList<>();
for(int i=0; i<restaurants.size(); i++)
gsonString.add(gson.toJson(restaurants.get(i)));
tinydb.putListString("tinyRestaurant",gsonString);
再次转换......
Gson gson = new Gson();
for(int i=0; i<tinydb.getListString("tinyRestaurant").size(); i++)
restaurants.add(gson.fromJson(tinydb.getListString("tinyRestaurant").get(i), Restaurant.class));