Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
如何从Firebase Android检索部分数据_Android_Database_Firebase_Firebase Realtime Database_Fetch - Fatal编程技术网

如何从Firebase Android检索部分数据

如何从Firebase Android检索部分数据,android,database,firebase,firebase-realtime-database,fetch,Android,Database,Firebase,Firebase Realtime Database,Fetch,接触碎片 ListView usersList; TextView noUsersText; ArrayList<String> al = new ArrayList<>(); int totalUsers = 0; ProgressDialog mProgressDialogue; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,

接触碎片

ListView usersList;
TextView noUsersText;
ArrayList<String> al = new ArrayList<>();
int totalUsers = 0;
ProgressDialog mProgressDialogue;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_contacts, container, false);

    usersList = (ListView)rootView.findViewById(R.id.usersList);
    noUsersText = (TextView)rootView.findViewById(R.id.noUsersText);

    mProgressDialogue = new ProgressDialog(getActivity());
    mProgressDialogue.setMessage("Loading...");
    mProgressDialogue.show();

    String url = "https://messageplus-cd647.firebaseio.com/Users.json";

    StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>(){
        @Override
        public void onResponse(String s) {
            doOnSuccess(s);
        }
    },new Response.ErrorListener(){
        @Override
        public void onErrorResponse(VolleyError volleyError) {
            System.out.println("" + volleyError);
        }
    });

    RequestQueue rQueue = Volley.newRequestQueue(getActivity());
    rQueue.add(request);

    usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            UserDetails.chatWith = al.get(position);
            Intent intent = new Intent(getActivity(), Chat.class);
            startActivity(intent);
        }
    });
    return rootView;
}
ListView用户列表;
文本视图nouser文本;
ArrayList al=新的ArrayList();
int totalUsers=0;
进程对话;进程对话;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u触点,容器,假);
usersList=(ListView)rootView.findViewById(R.id.usersList);
noUsersText=(TextView)rootView.findViewById(R.id.noUsersText);
mProgressDialogue=newprogressDialog(getActivity());
设置消息(“加载…”);
mProgressDialogue.show();
字符串url=”https://messageplus-cd647.firebaseio.com/Users.json";
StringRequest=newStringRequest(request.Method.GET,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串s){
最终成功;
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
System.out.println(““+截击错误”);
}
});
RequestQueue rQueue=Volley.newRequestQueue(getActivity());
rQueue.add(请求);
usersList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
UserDetails.chatWith=al.get(位置);
Intent Intent=新的Intent(getActivity(),Chat.class);
星触觉(意向);
}
});
返回rootView;
}
doOnSuccess方法

    public void doOnSuccess(String s){
    try {
        JSONObject obj = new JSONObject(s);

        Iterator i = obj.keys();
        String key = "";

        while(i.hasNext()){
            key = i.next().toString();

            if(!key.equals(UserDetails.phonenumber)) {
                al.add(key);
            }

            totalUsers++;
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

    if(totalUsers <=1){
        noUsersText.setVisibility(View.VISIBLE);
        usersList.setVisibility(View.GONE);
    }
    else{
        noUsersText.setVisibility(View.GONE);
        usersList.setVisibility(View.VISIBLE);
        usersList.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(),
                android.R.layout.simple_list_item_1 , al));
    }

    mProgressDialogue.dismiss();
}
public void doOnSuccess(字符串s){
试一试{
JSONObject obj=新的JSONObject;
迭代器i=obj.keys();
字符串键=”;
while(i.hasNext()){
key=i.next().toString();
如果(!key.equals(UserDetails.phonenumber)){
al.添加(键);
}
totalUsers++;
}
}捕获(JSONException e){
e、 printStackTrace();
}

如果(totalUsers要查询Firebase数据库,您只需创建一个
数据库引用
,请连接一个侦听器,并像下面这样迭代
DataSnapshot
对象:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ArrayList<String> arrayList = new ArrayList<>();
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, android.R.id.text1, arrayList);

        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("Name").getValue(String.class);
            arrayList.add(name);
        }
        listView.setAdapter(adapter);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
usersRef.addListenerForSingleValueEvent(eventListener);
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef=rootRef.child(“用户”);
ValueEventListener eventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
ArrayList ArrayList=新的ArrayList();
ListView ListView=(ListView)findViewById(R.id.list\u视图);
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,android.R.id.text1,arrayList);
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String name=ds.child(“name”).getValue(String.class);
arrayList.add(名称);
}
setAdapter(适配器);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){}
};
usersRef.addListenerForSingleValueEvent(eventListener);

输出将仅为用户的名称。

我可以获取在列表视图而不是日志中显示它的代码吗?无法解析构造函数的ArrayAdapter(anonymous com.google.firebase.database.ValueEventListener,int,int,java.util.ArrayList)更改
this
getApplicationContext()
。查看我的最新答案。它有效吗?但它是getActivity…因为我使用的是一个片段…无论如何,非常感谢你和我一起分享…干杯