gpt4 book ai didi

java - 调用 addValueEventListener 时 Firebase 返回错误值

转载 作者:太空狗 更新时间:2023-10-29 13:07:04 24 4
gpt4 key购买 nike

我在 Firebase 上有一个数据库,正试图让 android 将其打印到 ListView 中。我可以让 ListView 打印一些东西,但它似乎是值的一些 ID,而不是实际值。重点是能够做一个搜索栏,可以找到数据库中的任何数据。我在 addValueEventListener 中有一些注释代码。这段代码应该可以工作,但是当我使用它时,当我转到“ExistingCustomerActivity” Activity 时,我的应用程序崩溃而没有错误。 My database structure and the output from the app, with the current code.请注意,ListView 当前在“Buyers”下方打印值。有没有人可以帮助解决这个问题?提前致谢。更新:我可以看到数据已正确加载到日志中,但它仍然显示我假设的某种 ID。

public class ExistingCustomerActivity extends AppCompatActivity {

private DatabaseReference mDatabaseReference;
private ListView mUserList;

private ArrayList<Buyers> mUsernames = new ArrayList<>();

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

mDatabaseReference = FirebaseDatabase.getInstance().getReference("Buyers");

mUserList = (ListView) findViewById(R.id.UserListView);

final ArrayAdapter<Buyers> arrayAdapter = new ArrayAdapter<Buyers>(this, android.R.layout.simple_list_item_1, mUsernames);

mUserList.setAdapter(arrayAdapter);

mDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Buyers buyerList = new Buyers(childSnapshot);

for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Map<String, String> map = (Map<String, String>) childSnapshot.getValue();
Log.v("YourValue,","Map value is:" +map.toString());
Buyers buyerList = new Buyers(map);
mUsernames.add(buyerList);

}
arrayAdapter.notifyDataSetChanged();

}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}
}

买家类:

public class Buyers {
private String car_Value;
private String interest;
private String driverLicenseNr;
private String name;
private String personNr;
private String phone_Number;

public Buyers(Map<String,String> map){
car_Value = map.get("Bil");
interest = map.get("Interresse");
driverLicenseNr = map.get("Kørekortnr");
name = map.get("Navn");
personNr = map.get("Personnr");
phone_Number = map.get("Telefonnr");
}

最佳答案

您需要根据 firebase 数据库结构更改您的 Buyers 类变量或使用 Map 获取值

尝试使用下面的代码使用 Map 从 Buyers 获取值

mDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Buyers buyerList = new Buyers(childSnapshot);
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Map<String,String> map=(Map<String, String>) childSnapshot.getValue();
Buyers buyerList = new Buyers(map);
mUsernames.add(buyerList);
}
arrayAdapter.notifyDataSetChanged();
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

将构造函数从 DataSnapshot 更改为 Map 并获取值并设置到本地 Buyers 变量中。

public class Buyers {
private String car_Value;
private String interest;
private String driverLicenseNr;
private String name;
private String personNr;
private String phone_Number;


public Buyers(Map<String,String map){
car_Value = map.get("Bil");
interest = map.get("Interresse")
driverLicenseNr = map.get("Korekortnr")
name = map.get("Navn")
personNr = map.get("Personnr")
phone_Number =map.get("Telefonnr")
}
}

关于java - 调用 addValueEventListener 时 Firebase 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581900/

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