У меня есть приложение, которое подключено к базе данных Firebase.Мой текущий код не обновляет старое значение, а заменяет все предыдущие записи данных одним идентификатором задания.
Вот код, который принимает данные и сохраняет их в базе данных.
public override View OnCreateView(LayoutInflater inflater, ViewGroup
container, Bundle savedInstanceState)
{
// Use this to return your custom view for this Fragment
View view = inflater.Inflate(Resource.Layout.newequipment, container, false);
// return inflater.Inflate(Resource.Layout.YourFragment, container, false);
equipmentText = (TextInputLayout)view.FindViewById(Resource.Id.equipmentText);
descriptionText = (TextInputLayout)view.FindViewById(Resource.Id.descriptionText);
jobText = (TextInputLayout)view.FindViewById(Resource.Id.jobText);
typeSpinner = (MaterialSpinner)view.FindViewById(Resource.Id.typeSpinner);
submitButton = (Button)view.FindViewById(Resource.Id.submitButton);
submitButton.Click += SubmitButton_Click;
SetupTypeSpinner();
return view;
}
private void SubmitButton_Click(object sender, EventArgs e)
{
string equipmentNumber = equipmentText.EditText.Text;
string description = descriptionText.EditText.Text;
string job = jobText.EditText.Text;
HashMap equipmentInfo = new HashMap();
equipmentInfo.Put("equipmentNumber", equipmentNumber);
equipmentInfo.Put("description", description);
equipmentInfo.Put("job", job);
equipmentInfo.Put("type", type);
SupportV7.AlertDialog.Builder saveDataAlert = new SupportV7.AlertDialog.Builder(Activity);
saveDataAlert.SetTitle("SAVE EQUIPMENT INFORMATION");
saveDataAlert.SetMessage("Are you sure?");
saveDataAlert.SetPositiveButton("Continue", (senderAlert, args) =>
{
DatabaseReference newEquipmentRef = AppDataHelp.GetDatabase().GetReference("equipment").Push();
newEquipmentRef.SetValue(equipmentInfo);
this.Dismiss();
});
saveDataAlert.SetNegativeButton("Cancel", (senderAlert, args) =>
{
saveDataAlert.Dispose();
});
saveDataAlert.Show();
}
Это код, который вызывает проблему.
public override View OnCreateView(LayoutInflater inflater, ViewGroup
container, Bundle savedInstanceState)
{
// Use this to return your custom view for this Fragment
View view = inflater.Inflate(Resource.Layout.moveequipment, container, false);
// return inflater.Inflate(Resource.Layout.YourFragment, container, false);
jobText = (TextInputLayout)view.FindViewById(Resource.Id.jobText);
submitButton = (Button)view.FindViewById(Resource.Id.submitButton);
submitButton.Click += SubmitButton_Click;
return view;
}
private void SubmitButton_Click(object sender, EventArgs e)
{
string updateJob = jobText.EditText.Text;
DatabaseReference updateEquipmentRef = AppDataHelp.GetDatabase().GetReference();
updateEquipmentRef.Child("equipmentNumber").Child("description").Child("type");
HashMap updateMap = new HashMap();
updateMap.Put("job", updateJob);
updateEquipmentRef.SetValue(updateMap);
Редактировать: Структура данных
public class Equipment
{
public string EquipmentNumber { get; set; }
public string Description { get; set; }
public string Job { get; set; }
public string Type { get; set; }
public string ID { get; set; }
}
public void OnDataChange(DataSnapshot snapshot)
{
if (snapshot.Value != null)
{
var child = snapshot.Children.ToEnumerable<DataSnapshot>();
equipmentList.Clear();
foreach (DataSnapshot equipmentData in child)
{
Equipment equipment = new Equipment();
equipment.ID = equipmentData.Key;
equipment.EquipmentNumber = equipmentData.Child("equipmentNumber").Value.ToString();
equipment.Description = equipmentData.Child("description").Value.ToString();
equipment.Type = equipmentData.Child("type").Value.ToString();
equipment.Job = equipmentData.Child("job").Value.ToString();
equipmentList.Add(equipment);
}
EquipmentRetrieved.Invoke(this, new EquipmentDataEventArgs { Equipment = equipmentList });
}
}