【发布时间】:2018-04-04 21:05:14
【问题描述】:
到目前为止,我已经能够在 Android ListView 中显示节点 maintenance 的 Firebase 记录。但是,我希望更新这些记录的一部分。
单击记录时,将出现一个带有微调器 (spinnerProgress) 的 AlertDialog 对话框。通过更改此spinner 上的选项并单击“确定”按钮,然后ListView 和Firebase 数据库将更新。
* 编辑 *
所以,我在这个问题上取得了一些进展。当我点击我的buttonUpdateProgress 时,ListView (progress) 的部分会完美更新。
但是,它同时从ListView 中删除了我的字符串title 和description。有什么想法让它只有progress 改变吗?
下面是我的代码:
listViewIssues.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Maintenance maintenance = maintenanceList.get(position);
showProgressDialog(maintenance.getMaintenanceId(), maintenance.getMaintenanceTitle(), maintenance.getMaintenanceDescription(), maintenance.getMaintenanceProperty(), maintenance.getMaintenanceProgress());
}
});
--
private void showProgressDialog(final String id, String title, String description, String property, String maintenanceTitle) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.archive_maintenance, null);
dialogBuilder.setView(dialogView);
final Spinner spinnerProgress = (Spinner) dialogView.findViewById(R.id.spinnerProgress);
final Button buttonUpdateProgress = (Button) dialogView.findViewById(R.id.buttonUpdateProgress);
dialogBuilder.setTitle("Maintenance: " + maintenanceTitle);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
buttonUpdateProgress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String title = editTextTitle.getText().toString().trim();
String desc = editTextDesc.getText().toString().trim();
String progress = spinnerProgress.getSelectedItem().toString();
String property = spinnerProperty.getSelectedItem().toString();
updateProgress(title, desc, id, property, progress);
alertDialog.dismiss();
}
});
}
--
private boolean updateProgress (String title, String desc, String id, String property, String progress) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("maintenance").child(id);
Maintenance maintenance = new Maintenance(id, title, desc, property, progress);
FirebaseUser user = mAuth.getCurrentUser();
String uid = user.getUid();
databaseMaintenance.child(uid).child(id).setValue(maintenance);
databaseReference.setValue(maintenance);
Toast.makeText(this, "Maintenance Updated Updated Successfully", Toast.LENGTH_LONG).show();
return true;
}
【问题讨论】:
-
还有什么错误吗
-
有什么问题?你没有提到这个
-
@HemalHerath 我已经更新了问题。
-
@DeepPatel 我已经更新了问题。
-
@wright_arturo :请在下面查看我的答案。添加了一些空间和评论以方便您使用
标签: java android firebase firebase-realtime-database android-recyclerview