使用 headers 从 firebase 检索列表视图数据
Retrieve listview data from firebase with headers
我已经把它放在数组适配器下面但它没有响应我在这一行收到错误:adapter.add((String) dataSnapshot.getValue());
ClassCastException java.util.Hashmap 无法转换为 java.lang.String 我应该将代码具体放在哪里?
public class 关于扩展片段 {
ListView aboutList;
private ArrayList<String> items;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//return inflater.inflate(R.layout.about, container, false);
View v = inflater.inflate(R.layout.about, container, false);
aboutList = (ListView) v.findViewById(R.id.aboutus);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1);
aboutList.setAdapter(adapter);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference aboutRef = rootRef.child("about");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
Log.d("TAG", key);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
aboutRef.addListenerForSingleValueEvent(valueEventListener);
rootRef.child("About").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
adapter.add((String) dataSnapshot.getValue());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return v;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("About");
}
}
要解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference aboutRef = rootRef.child("about");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
Log.d("TAG", key);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
aboutRef.addListenerForSingleValueEvent(valueEventListener);
输出将是:
Departament
Fondation
Objectif
我已经把它放在数组适配器下面但它没有响应我在这一行收到错误:adapter.add((String) dataSnapshot.getValue()); ClassCastException java.util.Hashmap 无法转换为 java.lang.String 我应该将代码具体放在哪里?
public class 关于扩展片段 {
ListView aboutList;
private ArrayList<String> items;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//return inflater.inflate(R.layout.about, container, false);
View v = inflater.inflate(R.layout.about, container, false);
aboutList = (ListView) v.findViewById(R.id.aboutus);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1);
aboutList.setAdapter(adapter);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference aboutRef = rootRef.child("about");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
Log.d("TAG", key);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
aboutRef.addListenerForSingleValueEvent(valueEventListener);
rootRef.child("About").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
adapter.add((String) dataSnapshot.getValue());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return v;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("About");
}
}
要解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference aboutRef = rootRef.child("about");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
Log.d("TAG", key);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
aboutRef.addListenerForSingleValueEvent(valueEventListener);
输出将是:
Departament
Fondation
Objectif