使用与Firebase的接口

目前,我正在为几个不同的类实现一个名为RowType的接口,让我们假设类A,B和C.如何遍历Firebase以获取每个不同的对象?使用与Firebase的接口

.addListenerForSingleValueEvent(new ValueEventListener() { 

@Override

public void onDataChange(DataSnapshot dataSnapshot) {

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

RowType rowType = snapshot.getValue(RowType.class);

Log.d("awdjk", "qwjel");

}

我会假设,因为插在火力地堡的所有对象要么是A级,B,或C,我可以使用ROWTYPE来获取快照值。但是,我收到一条错误消息,指出“在类RowType上找不到要序列化的属性”。

UPDATE

接口

public interface RowType { 

int EXERCISE_ROW = 0;

int REST_ROW = 1;

int SUPERSET_ROW = 2;

int PYRAMIDSET_ROW = 3;

int BUTTON_ROW = 4;

}

运动类

public class ExerciseModel implements RowType { 

public String exercise, sets, reps, view, minutes, seconds, time, weight, childCount;

private EditText weightEditText, setsEditText, repsEditText;

private AutoCompleteTextView exerciseEditText;

private ImageView dragHandle;

private ExerciseRowTextWatcher exerciseRowTextWatcher;

public ExerciseRowTextWatcher getExerciseRowTextWatcher(){

return exerciseRowTextWatcher;

}

public void setExerciseRowTextWatcher(ExerciseRowTextWatcher exerciseRowTextWatcher){

this.exerciseRowTextWatcher = exerciseRowTextWatcher;

}

public ImageView getDragHandle(){

return dragHandle;

}

public void setDragHandle(ImageView dragHandle){

this.dragHandle = dragHandle;

}

public AutoCompleteTextView getExerciseEditText(){

return exerciseEditText;

}

public void setExerciseEditText(AutoCompleteTextView exerciseEditText){

this.exerciseEditText = exerciseEditText;

}

public EditText getWeightEditText(){

return weightEditText;

}

public void setWeightEditText(EditText weightEditText){

this.weightEditText = weightEditText;

}

public EditText getSetsEditText(){

return setsEditText;

}

public void setSetsEditText(EditText setsEditText){

this.setsEditText = setsEditText;

}

public EditText getRepsEditText(){

return repsEditText;

}

public void setRepsEditText(EditText repsEditText){

this.repsEditText = repsEditText;

}

public String getChildCount(){

return childCount;

}

public void setChildCount(String childCount){

this.childCount = childCount;

}

public String getExercise(){

return exercise;

}

public String getWeight(){

return weight;

}

public String getSets(){

return sets;

}

public String getReps(){

return reps;

}

public String getView(){

return view;

}

public String getMinutes(){

return minutes;

}

public String getSeconds(){

return seconds;

}

public String getTime(){ return time;}

public void setExercise(String exercise){

this.exercise = exercise;

}

public void setTime(String time){ this.time = time; }

public void setWeight(String weight){

this.weight = weight;

}

public void setMinutes(String minutes){

this.minutes = minutes;

}

public void setSeconds(String seconds){

this.seconds = seconds;

}

public void setSets(String sets){

this.sets = sets;

}

public void setView(String view){

this.view = view;

}

public void setReps(String reps){

this.reps = reps;

}

}

我有在接口实现其他类,但要保持这一简短,我只增加锻炼班。其他班级比较相似。

回答:

您不能用作模型类,接口。这是不可能的,因为模型类必须具有Firebase所需的public no-argument constructor。正如我们所知,接口不能使用关键字new进行初始化,因此不能有构造函数。

为什么Firebase需要无参数构造函数?当Firebase实时数据库SDK对来自数据库的对象进行反序列化时,它需要使用的任何对象都有它可以用来实例化对象的对象,这对于一个接口来说是不可能的,因为SDK并不知道如何创建它的一个实例。

以上是 使用与Firebase的接口 的全部内容, 来源链接: utcz.com/qa/259974.html

回到顶部