注册用户在firebase聊天应用程序中检索

时间:2017-08-11 09:08:17

标签: android firebase arraylist firebase-realtime-database firebase-storage

我正在开发一个与whatsapp相同的聊天应用程序但是我在获取已注册我的应用程序的用户以及谁在联系人列表中时遇到问题...

我的数据库:

std::vector<int>::iterator mid = nr.begin() + nr.size() / 2;
std::vector<int>::iterator midLast = nr.size() / 2 + nr.end();
vector<int> temp1, temp2;
std::reverse_copy(nr.begin(),mid, std::begin(temp1));
std::reverse_copy(midLast, nr.end(), std::begin(temp2));
std::reverse(temp1.begin(), temp2.end());

我的代码:

 chat
   users
     -TnBhKlDUWhZZtnXjqJPwybCXs043
       name:prem jangir
       phone:+9180947729xx;
       avatar:htpp://...
     -TjjfdldlvllUdffkgjfkkfkkgkfk
     .
     .

我已经从联系人列表中检索了所有联系人,并存储在allContact ArrayList<Contacts> allContact = new ArrayList<>(); DatabaseReference mDatabase; RecyclerView allUserRecycle; ArrayList<Users> allUsers =new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_all_users); mDatabase = FirebaseDatabase.getInstance().getReference().child("users"); while (i <= allContact.size()-1) { Contacts contact = allContact.get(i); String phone = contact.phone; retrieveUsers(phone); i++; } } public void retrieveUsers(String phone ) { Query mQuery=mDatabase.orderByChild("phone").equalTo(phone).limitToFirst(1); if(FirebaseDatabase.getInstance()!=null) FirebaseDatabase.getInstance().goOffline(); FirebaseDatabase.getInstance().goOnline(); assert mQuery != null; mQuery.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Users u= dataSnapshot.getValue(Users.class); if(u!=null) Log.e("test",u.name); allUsers.add(u); } 中。  此代码需要很长时间才能在recycleview中显示数据.... 这是正确的做法,还是有其他方法可以做到 请帮助

1 个答案:

答案 0 :(得分:1)

要解决您的问题,您需要删除以下代码行:

FirebaseDatabase.getInstance().goOffline();
FirebaseDatabase.getInstance().goOnline();

您不需要下线然后上网。这将降低在RecycleView中显示数据的速度。如果您是肌酸新FirebaseDatabase参考,那么您已经连接了。因此,没有必要使用这些方法。

希望它有所帮助。

相关问题