此代码按键获取值并在listview中设置它们。
mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getReference("1234");
FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(
this,
String.class,
android.R.layout.simple_list_item_1,
mFirebaseDatabase
) {
@Override
protected void populateView(View v, String model, int position) {
TextView textView = (TextView) v.findViewById(android.R.id.text1);
textView.setText(model);
}
};
以下是错误消息:
com.google.firebase.database.DatabaseException:无法将java.util.HashMap类型的值转换为String .....
答案 0 :(得分:1)
这是通过键获取值的方法:
namespace App\Http\Controllers
use App\Http\Controllers\admin\AdminController
但是在您的情况下,您得到的错误是因为在child(“ 1234”)中有2个child,并且您试图将它们作为一个String获得,这不是正确的方法,为此,请遵循deepmala的回答。
答案 1 :(得分:0)
不确定如何使用FirebaseListAdapter(也不太确定这是否是您尝试做的事情),但您总是可以使用SingleValueEventListener。
mFirebaseDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
ArrayList<String> strings = new ArrayList<>();
for (DataSnapshot child : dataSnapshot.getChildren()) {
String result = snapshot.getValue(String.class);
}
textView.setText(result);
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.ListView, strings.toArray(new String[list.size()]));
((ListView) findViewById(R.id.listview)).setAdapter(adapter);
}
}
如果您仍然遇到问题,可能是您的数据库结构存在问题,或者您缺少读取权限。
答案 2 :(得分:0)
我说的是这个文件:
public class Model{
public String phoneNumber;
public String timestamp;
public Model() {
// Default constructor required for calls to DataSnapshot.getValue(Model.class)
}
public Model(String phoneNumber, String timestamp) {
this.phoneNumber = phoneNumber;
this.timestamp = timestamp;
}
//Getters and setters
public String getphoneNumber() {
return phoneNumber;
}
public void settimestamp(String timestamp) {
this.timestamp = timestamp;
}
public void setphoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String gettimestamp() {
return timestamp;
}
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result1 = new HashMap<>();
result1.put("timestamp", timestamp);
result1.put("phoneNumber", phoneNumber);
return result1;
}
}