Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误-com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为com.example.project\u.Event1类型_Java_Android_Firebase_Android Studio_Compiler Errors - Fatal编程技术网

错误-com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为com.example.project\u.Event1类型

错误-com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为com.example.project\u.Event1类型,java,android,firebase,android-studio,compiler-errors,Java,Android,Firebase,Android Studio,Compiler Errors,我得到了这个错误,粗体标题上的“com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.example.project\u selling.Event1”。 我创建了一个队列管理应用程序,我有一个字符串(电话号码)的映射和所有事件的ArrayList myRef.addValueEventListener(new ValueEventListener() {

我得到了这个错误,粗体标题上的“com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.example.project\u selling.Event1”。
我创建了一个队列管理应用程序,我有一个字符串(电话号码)的映射和所有事件的ArrayList

        myRef.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                 for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
                        String key = childSnapshot.getKey();
                        if(key.equals("clients")) {
                            allEvents = childSnapshot.getValue(AllEvents.class);
                        } else if(key.equals("manager")) {
                            manager = childSnapshot.getValue(Manager.class);
                        }
                    }
                }
            }

            @Override
            public void onCancelled(DatabaseError error) {
            }
        });

以下是事件1:

public class Event1 {
    private String number,type,messages,hour;
    private int price,day,year,month,status;

    public Event1(String number, String type, int price, int day, int month, int year, String hour,int status, String messages) {}


    public String getNumber() {
        return number;
    }

    public Event1(){}

    public void setMessages(Event1 event) {
        this.messages = "The event:" + event+ " is cancel";
    }

    public int calculationCost(){ }

      @Override
    public String toString() {}
}

以下是所有事件:

public class AllEvents {
    private Map<String, ArrayList<Event1>> data;

    public Map<String,ArrayList<Event1>> getData() {
        return data;
    }

    public AllEvents() {
         data = new HashMap<String, ArrayList<Event1>>();
    }

    public void setData(Map<String,ArrayList<Event1>> data) {

        this.data = data;
    }
    public void addToList(String mapKey,Event1 event){
        ArrayList<Event1> itemsList = data.get(mapKey);
        if(itemsList == null) {
            itemsList = new ArrayList<Event1>();
            itemsList.add(event);
            data.put(mapKey, itemsList);
        } else
            if(!itemsList.contains(event)) itemsList.add(event);
    }
    public AllEvents(Map<String,ArrayList<Event1>> map) {
        if(this.data == null)
            data = new HashMap<String,ArrayList<Event1>>();
        else
            this.data = map;
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    public boolean isExist(Event1 e)
    {
        if(!data.containsKey(e.getNumber()))
            return false;
        ArrayList<Event1> elist =  data.get(e.getNumber());
        for (Event1 eitem: elist) {
            if(eitem.equals(e))
                return true;
        }
        return false;
    }
}

公共类事件{
私有地图数据;
公共地图getData(){
返回数据;
}
公共场所{
data=newhashmap();
}
公共void setData(地图数据){
这个数据=数据;
}
public void addToList(字符串映射键,Event1事件){
ArrayList itemsList=data.get(mapKey);
if(itemsList==null){
itemsList=新的ArrayList();
itemsList.add(事件);
data.put(mapKey,itemsList);
}否则
如果(!itemsList.contains(event))itemsList.add(event);
}
公共小巷(地图){
if(this.data==null)
data=newhashmap();
其他的
这个数据=地图;
}
@RequiresApi(api=Build.VERSION\u CODES.KITKAT)
公共布尔值isExist(Event1 e)
{
如果(!data.containsKey(例如getNumber()))
返回false;
ArrayList elist=data.get(如getNumber());
对于(事件1 eitem:elist){
如果(eitem.等于(e))
返回true;
}
返回false;
}
}

根据您的数据库结构,您将从
查询
firebase获得多个子
。您必须按如下方式处理此问题:

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

    for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {

        String key = childSnapshot.getKey();

        if(key.equals("clients")) {
            allEvents = childSnapshot.getValue(AllEvents.class);
        } else if(key.equals("manager")) {
            manager = childSnapshot.getValue(Manager.class);
        }
    }
}
public class Event1 {
    private String number,type,messages,hour;
    private int price,day,year,month,status;

    public Event1(String number, String type, int price, int day, int month, int year, String hour,int status, String messages) {}


    public String getNumber() {
        return number;
    }

    public Event1(){}

    public int calculationCost(){ }

    @Override
    public String toString() {}
}
还可以更改
Event1
,如下所示:

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

    for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {

        String key = childSnapshot.getKey();

        if(key.equals("clients")) {
            allEvents = childSnapshot.getValue(AllEvents.class);
        } else if(key.equals("manager")) {
            manager = childSnapshot.getValue(Manager.class);
        }
    }
}
public class Event1 {
    private String number,type,messages,hour;
    private int price,day,year,month,status;

    public Event1(String number, String type, int price, int day, int month, int year, String hour,int status, String messages) {}


    public String getNumber() {
        return number;
    }

    public Event1(){}

    public int calculationCost(){ }

    @Override
    public String toString() {}
}

实际上,您的
dataSnapshot
返回字符串,而不是
AllEvents
。你能添加你的数据库结构吗?还可以添加
myRef
当然,@Md.Asaduzzaman 3您还可以添加
myRef
AllEvents
model?@Md.Asaduzzaman I added:)我从这个数据库结构中得到一个空值现在我得到这个数据库结构:message->clients->data->data。当我试着从消防基地阅读时,它不起作用@AsaduzzamanI博士创建一个队列管理应用程序,我有一个字符串地图(电话号码)和所有事件的ArrayList扫描您添加
AllEvents
Event1
的完整代码?我添加了完整代码,谢谢!@阿萨杜扎曼博士