不可转换的类型错误

问题描述 投票:1回答:1

我想做menus.add(menuTemp);,但它显示Inconvertible types error。我试过menus.add((Restaurant.Menu) menuTemp),这没用。有什么建议吗?

add (java.util.List<oz.ncclife.model.Restaurant.Menu>)
to (java.util.ArrayList<java.lang.String>)

项目的一部分可能会有所帮助

ArrayList<String> menuTemp = new ArrayList<>();
List<List<Restaurant.Menu>> menus = new ArrayList<>();

//Change structure
ArrayList<Object> objPhones = new ArrayList<Object>();
for(int i = 0; i < phones.size(); i++)
{
        objPhones.add(phones.get(i));
}

ArrayList<Object> objMenus = new ArrayList<Object>();
for(int i = 0; i < menus.size(); i++)
{
         objMenus.add(menus.get(i));
}

tinydb.putListObject("restMenus",objMenus);
tinydb.putListObject("restPhones",objPhones);



//restore part
ArrayList<Object> objPhones = tinydb.getListObject("restPhones",Object.class);
ArrayList<Object> objMenus = tinydb.getListObject("restMenus",Object.class);

ArrayList<String> phoneTemp = new ArrayList<String>();
ArrayList<String> menuTemp = new ArrayList<>();

for(int i = 0; i < objPhones.size(); i++)
{
            phoneTemp.add(objPhones.get(i).toString());
            menuTemp.add(objMenus.get(i).toString());
}
phones.add(phoneTemp);
menus.add(menuTemp);

还有,Restaurant.java

public class Restaurant
{
@SerializedName("cacheVersion")
@Expose
public String cacheVersion;
@SerializedName("id")
@Expose
public Integer id;
@SerializedName("name")
@Expose
public String name;
@SerializedName("desc")
@Expose
public String desc;
@SerializedName("phones")
@Expose
public List<String> phones = null;
@SerializedName("menus")
@Expose
public List<Menu> menus = null;
@SerializedName("image")
@Expose
public String image;


public class Menu
{
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("foods")
    @Expose
    public List<Food> foods = null;
}


public class Food
{
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("desc")
    @Expose
    public String desc;
    @SerializedName("price")
    @Expose
    public String price;
}
}
java android list arraylist type-conversion
1个回答
2
投票

你无法添加

ArrayList<String> menuTemp = new ArrayList<>();

进入这个变量

List<List<Restaurant.Menu>> menus = new ArrayList<>();

因为编译器正在等待ListRestaurant.Menu而不是ListString

您应该像这样更改要添加的List的类型:

  List<Restaurant.Menu> menuTemp = new ArrayList<>();

UPDATE

要向qazxsw poi qazxsw poi添加数据,您应该使用menuTemp类的构造函数:

ArrayList

更新2

改变这个:

Restaurant.Menu

对此:

for(int i = 0; i < objPhones.size(); i++)
{
            phoneTemp.add(objPhones.get(i).toString());
            Restaurant.Menu menuClass = new Restaurant.Menu();
            menuClass.name = objMenus.get(i).toString();
            menuTemp.add(menuClass);
}
© www.soinside.com 2019 - 2024. All rights reserved.