我正在尝试从实时数据库中检索嵌套数据,正常数据正确返回,但嵌套数据返回null。问题可能是我的接收器类。我怎样才能使它发挥作用?
这是我的课程:
接收者类
public class Auxiliar {
private int ID_Evento;
private int ID_Usuario_Criou;
private String Codigo;
private String Complemento;
private String Data_Inicio;
private String Data_Fim;
private String Hora;
private String Local;
private String Nome_Evento;
//public Participantes participantes;
private HashMap<String, Participantes> participantesMap = new HashMap<>();
public int getID_Evento() {
return ID_Evento;
}
public int getID_Usuario_Criou() {
return ID_Usuario_Criou;
}
public String getCodigo() {
return Codigo;
}
public String getComplemento() {
return Complemento;
}
public String getData_Inicio() {
return Data_Inicio;
}
public String getData_Fim() {
return Data_Fim;
}
public String getHora() {
return Hora;
}
public String getLocal() {
return Local;
}
public String getNome_Evento() {
return Nome_Evento;
}
public void setID_Evento(int ID_Evento) {
this.ID_Evento = ID_Evento;
}
public void setID_Usuario_Criou(int ID_Usuario_Criou) {
this.ID_Usuario_Criou = ID_Usuario_Criou;
}
public void setCodigo(String codigo) {
Codigo = codigo;
}
public void setComplemento(String complemento) {
Complemento = complemento;
}
public void setData_Inicio(String data_Inicio) {
Data_Inicio = data_Inicio;
}
public void setData_Fim(String data_Fim) {
Data_Fim = data_Fim;
}
public void setHora(String hora) {
Hora = hora;
}
public void setLocal(String local) {
Local = local;
}
public void setNome_Evento(String nome_Evento) {
Nome_Evento = nome_Evento;
}
public HashMap<String, Participantes> getParticipantesMap() {
return participantesMap;
}
public void setParticipantesMap(HashMap<String, Participantes> participantesMap) {
this.participantesMap = participantesMap;
}
public class HashMap<String, Participantes> {
private int id_Usuario;
private int vnv;
private String vnv_data;
public int getId_Usuario() {
return id_Usuario;
}
public int getVnv() {
return vnv;
}
public String getVnv_data() {
return vnv_data;
}
public void setId_Usuario(int id_Usuario) {
this.id_Usuario = id_Usuario;
}
public void setVnv(int vnv) {
this.vnv = vnv;
}
public void setVnv_data(String vnv_data) {
this.vnv_data = vnv_data;
}
}
}
我的查询结果
childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d("Entrou","VEio algo "+dataSnapshot.getKey());
Auxiliar auxAgenda = dataSnapshot.getValue(Auxiliar.class);
Log.d("Eventos que veio",auxAgenda.getNome_Evento()+" foi isso");
Log.d("Eventos que veio nested",auxAgenda.getParticipantesMap().getVnv_data() + " foi muito isso");
}
}
Monitor中的结果是:
05-15 20:44:54.805 21711-21711/inacius.listachamada D/Eventos que veio: Futebol foi isso
05-15 20:44:54.805 21711-21711/inacius.listachamada D/Eventos que veio nested: null foi muito isso
参与课程
public class Participantes {
private int id_Usuario;
private int vnv;
private String vnv_data;
public Participantes(int id_Usuario, int vnv, String vnv_data) {
this.id_Usuario = id_Usuario;
this.vnv = vnv;
this.vnv_data = vnv_data;
}
public Participantes(){
}
public int getId_Usuario() {
return id_Usuario;
}
public void setId_Usuario(int id_Usuario) {
this.id_Usuario = id_Usuario;
}
public int getVnv() {
return vnv;
}
public void setVnv(int vnv) {
this.vnv = vnv;
}
public String getVnv_data() {
return vnv_data;
}
public void setVnv_data(String vnv_data) {
this.vnv_data = vnv_data;
}
}
答案 0 :(得分:2)
您需要创建一个默认构造函数。
在您的Model类中添加:无参数构造函数。
例如: -
公共课参与{
public Participate(){
// no argument constructor
}
}
答案 1 :(得分:1)
尝试创建一个名为&#34; Participante&#34;,
的类public class Participante{
int id_Usuario;
int vnv;
String vnv_data;
public Participante (){ // no argument constructor }
public Participante (int id_Usuario, int vnv, String vnv_data){
this.id_usuario = id_Usuario;
this.vnv = vnv;
this.vnv_data = vnv_data;
}
}
在您的班级Auxiliar中,您创建了一个名为&#34; participante&#34;的属性:
public Participante participante;
另外,创建setter
public void setParticipante(Participante participante) {
this.participante = participante
}
尝试使用
进行访问auxiliarObj.participante.id_Usuario
答案 2 :(得分:0)
我终于完成了,在cesarsicas的帮助下,我将我的类重建为默认类(Contructor,getters和setter)和no args构造函数。
public class Auxiliar {
private int ID_Evento;
private int ID_Usuario_Criou;
private String Codigo;
private String Complemento;
private String Data_Inicio;
private String Data_Fim;
private String Hora;
private String Local;
private String Nome_Evento;
//public Participantes participantes;
public Map <String, Participantes> participantesMap = new HashMap<>();
public Auxiliar(int ID_Evento, int ID_Usuario_Criou, String codigo, String complemento, String data_Inicio, String data_Fim, String hora, String local, String nome_Evento, Map<String, Participantes> participantesMap) {
this.ID_Evento = ID_Evento;
this.ID_Usuario_Criou = ID_Usuario_Criou;
Codigo = codigo;
Complemento = complemento;
Data_Inicio = data_Inicio;
Data_Fim = data_Fim;
Hora = hora;
Local = local;
Nome_Evento = nome_Evento;
this.participantesMap = participantesMap;
}
public Auxiliar(){
}
public int getID_Evento() {
return ID_Evento;
}
public int getID_Usuario_Criou() {
return ID_Usuario_Criou;
}
public String getCodigo() {
return Codigo;
}
public String getComplemento() {
return Complemento;
}
public String getData_Inicio() {
return Data_Inicio;
}
public String getData_Fim() {
return Data_Fim;
}
public String getHora() {
return Hora;
}
public String getLocal() {
return Local;
}
public String getNome_Evento() {
return Nome_Evento;
}
public void setID_Evento(int ID_Evento) {
this.ID_Evento = ID_Evento;
}
public void setID_Usuario_Criou(int ID_Usuario_Criou) {
this.ID_Usuario_Criou = ID_Usuario_Criou;
}
public void setCodigo(String codigo) {
Codigo = codigo;
}
public void setComplemento(String complemento) {
Complemento = complemento;
}
public void setData_Inicio(String data_Inicio) {
Data_Inicio = data_Inicio;
}
public void setData_Fim(String data_Fim) {
Data_Fim = data_Fim;
}
public void setHora(String hora) {
Hora = hora;
}
public void setLocal(String local) {
Local = local;
}
public void setNome_Evento(String nome_Evento) {
Nome_Evento = nome_Evento;
}
public Map<String, Participantes> getParticipantes() {
return participantesMap;
}
public void setParticipantes(Map<String, Participantes> participantes) {
this.participantesMap = participantes;
}
}
在我的查询接收器中,我找到了从数据快照获取数据的正确方法。
childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d("Entrou","VEio algo "+dataSnapshot.getKey());
Auxiliar auxAgenda = dataSnapshot.getValue(Auxiliar.class);
Log.d("Eventos que veio",auxAgenda.getNome_Evento()+" foi isso");
Log.d("Eventos que veio nested",auxAgenda.participantesMap.get("inacio_17").getVnv_data() + " foi muito isso");
//Log.d("Eventos que veio nested",auxAgenda.participantesMap.get("brunopminacio@gmailcom").getVnv_data() + " foi muito isso");
}