gpt4 book ai didi

java - 如何解决向 Firebase 数据库添加数据的问题

转载 作者:行者123 更新时间:2023-12-01 19:07:23 25 4
gpt4 key购买 nike

enter image description here我是 Firebase 的新手,我正在尝试制作一个 Android 应用程序,用户可以通过创建 Activity 来跟踪锻炼情况,然后将 Activity 存储在数据库(Firebase)中。但是,当我尝试将每个 Activity 对象添加到数据库时,仅插入部分字段。请参阅下面的相关代码

Activity 类别

public class Activity {
private String workout, user, exercise, duration, weight, reps, date, activity_workout_user;

Activity(String workout, String user, String exercise, String duration, String weight, String reps, String date) {
this.workout = workout;
this.user = user;
this.exercise = exercise;
this.duration = duration;
this.weight = weight;
this.reps = reps;
this.date = date;
this.activity_workout_user = exercise + "_" + workout + "_" + user;
}

//getters and setters
}

添加 Activity 类

public class AddActivity extends AppCompatActivity {
FirebaseDatabase database;
DatabaseReference ref;
String user, workoutName, timeCreated;
Spinner AAexerciseSP;
EditText AArepsET, AAdurationET, AAweightET;
TextView AAworkoutNameTV, AAerrorsTV, AAinfoTV;
Button AAaddActivityBTN, AAsaveWorkoutBTN;
static ArrayList<Activity> activities;
int totalActivities = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);

database = FirebaseDatabase.getInstance();
ref = database.getReference();
SQLquery = "";
activities = new ArrayList<>();

Intent intent = getIntent();
user = intent.getStringExtra("username");
workoutName = intent.getStringExtra("workout_name");
timeCreated = DateTime.TimeDate();

AAworkoutNameTV = findViewById(R.id.AAworkoutNameTV);
AAerrorsTV = findViewById(R.id.AAerrorsTV);
AAinfoTV = findViewById(R.id.AAinfoTV);
AAexerciseSP = findViewById(R.id.AAexerciseSP);
AAaddActivityBTN = findViewById(R.id.AAaddActivityBTN);
AAsaveWorkoutBTN = findViewById(R.id.AAsaveWorkoutBTN);
AArepsET = findViewById(R.id.AArepsET);
AAdurationET = findViewById(R.id.AAdurationET);
AAweightET = findViewById(R.id.AAweightET);

AAworkoutNameTV.setText(String.format("Workout name: %s", workoutName));

// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.exercise_list, android.R.layout.simple_spinner_item);

// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// Apply the adapter to the spinner
AAexerciseSP.setAdapter(adapter);

AAexerciseSP.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = (String) parent.getSelectedItem();
String[] array = getResources().getStringArray(R.array.cardio_exercises);
List<String> exercises = Arrays.asList(array);
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}

public String selectedExercise(){
return (String) AAexerciseSP.getSelectedItem();
}

public void addActivity(View view){
String activityExercise = selectedExercise();
String activityUser = user;
String activityWorkout = workoutName;
String activityDuration = AAdurationET.getText().toString();
String activityReps = AArepsET.getText().toString();
String activityWeight = AAweightET.getText().toString();
String activityDate = DateTime.TimeDate();

Activity activity = new Activity(activityWorkout, activityUser, activityExercise,
activityDuration, activityWeight, activityReps, timeCreated);

activities.add(activity);
totalActivities += 1;

}

public void saveWorkout(View view){
for (Activity activity:activities){
String key = database.getReference("activities").push().getKey();

assert key != null;
ref.child("activities").child(key).setValue(activity);
}

Workout workout = new Workout(workoutName,user,timeCreated,"");
String key = database.getReference("workouts").push().getKey();

assert key != null;
ref.child("workouts").child(key).setValue(workout);

startActivity(new Intent(this, HomePage.class));

}

}

将每个 Activity 对象插入数据库是在“saveWorkout”方法中进行的,但不是插入类中的所有字段,而是仅插入“activity_workout_user”和“user”字段。请参阅下面的数据库 fragment 。

任何帮助插入所有字段的帮助将不胜感激。

提前致谢,

干杯

最佳答案

我想发表评论,但我对 stackoverflow 很陌生,所以我还不能发表评论。我最近才开始自己使用 Firebase,但并没有学会 100% 正确使用它。但我读到,当涉及到向数据库添加自定义对象时,对象应该有一个不带参数的附加构造函数,并且每个变量都应该有 getter 和 setter。

关于java - 如何解决向 Firebase 数据库添加数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com