Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从firebase中检索具有标题的listview数据_Android_Android Layout_Firebase_Android Adapter - Fatal编程技术网

Android 从firebase中检索具有标题的listview数据

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

我把它放在数组适配器下面,但它没有响应。我在这一行遇到错误:adapter.add((String)dataSnapshot.getValue()); ClassCastException java.util.Hashmap不能转换为java.lang.String,我应该将代码具体放在哪里

关于扩展片段的公共类{

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中。行吗?但你根本没用我的代码。请添加上面的代码,然后重试。用此代码替换您的代码。它会起作用的,经过测试。错误是什么?只有您用来获取数据的代码。