Android 从firebase中检索具有标题的listview数据
我把它放在数组适配器下面,但它没有响应。我在这一行遇到错误:adapter.add((String)dataSnapshot.getValue()); ClassCastException java.util.Hashmap不能转换为java.lang.String,我应该将代码具体放在哪里 关于扩展片段的公共类{Android 从firebase中检索具有标题的listview数据,android,android-layout,firebase,android-adapter,Android,Android Layout,Firebase,Android Adapter,我把它放在数组适配器下面,但它没有响应。我在这一行遇到错误:adapter.add((String)dataSnapshot.getValue()); ClassCastException java.util.Hashmap不能转换为java.lang.String,我应该将代码具体放在哪里 关于扩展片段的公共类{ ListView aboutList; private ArrayList<String> items; @Nullable @Override public View
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");
}
ListView关于列表;
私有ArrayList项;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
//返回充气机。充气(右布局,容器,假);
视图v=充气机充气(右布局,容器,假);
aboutList=(ListView)v.findViewById(R.id.aboutus);
最终ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,android.R.id.text1);
aboutList.setAdapter(适配器);
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference aboutRef=rootRef.child(“关于”);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String key=ds.getKey();
Log.d(“标签”,键);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){}
};
aboutRef.addListenerForSingleValueEvent(valueEventListener);
rootRef.child(“About”).addChildEventListener(新的ChildEventListener()){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
add((字符串)dataSnapshot.getValue());
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
返回v;
}
@凌驾
已创建视图上的公共void(视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
getActivity().setTitle(“关于”);
}
}要解决此问题,请使用以下代码:
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
在MainActivity.class中,并在logcat中查看结果。好的,尝试将其添加到fragmnet中。行吗?但你根本没用我的代码。请添加上面的代码,然后重试。用此代码替换您的代码。它会起作用的,经过测试。错误是什么?只有您用来获取数据的代码。