我正在使用 Firebase 库练习,我希望能够在与 Main 分开的类中拥有一些方法,并且能够调用这些方法并返回例如用户。
示例 FirebaseDBHelper.java
public static UserModel getUserFromId(String userId) {
final UserModel[] user = new UserModel[1];
dbRef.child("status").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user value
user[0] = dataSnapshot.getValue(UserModel.class);
Log.d("TAG", "Value is: " + dataSnapshot.getValue());
Log.d("TAG", "User: " + user);
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("TAG", "getUser:onCancelled", databaseError.toException());
// ...
}
});
return user[0];
}
Run Code Online (Sandbox Code Playgroud)
主叫
UserModel user = FirebaseDatabaseHelper.getUserFromId("9876");
Log.d("TAG", "UserInfo: " + user);
Run Code Online (Sandbox Code Playgroud)
但是我有一些问题,因为该方法getUserFromId()不返回任何内容。
我创建了TextView一个带有选项的警报对话框和一个列表。用户可以从列表中选择一项,也可以使用EditText.
问题是alertDialog只有当我给按钮添加新的时才会隐藏,而不是当我点击列表中的一个项目时。
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final LayoutInflater inflater = getLayoutInflater();
final View dialogGroup = inflater.inflate(R.layout.select_group_layout, null);
final EditText newGroup = dialogGroup.findViewById(R.id.new_group);
final ListView listView = dialogGroup.findViewById(R.id.groups_list);
listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HelperTools.showInfo("Selected group: " + ((TextView) view).getText(), getClass());
}
});
builder.setView(dialogGroup)
.setTitle(R.string.departments_txt)
.setPositiveButton("Añadir", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
contactDepartment = newGroup.getText().toString();
HelperTools.showInfo("Selected …Run Code Online (Sandbox Code Playgroud)