我正在开发一个与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中显示数据....
这是正确的做法,还是有其他方法可以做到
请帮助
答案 0 :(得分:1)
要解决您的问题,您需要删除以下代码行:
FirebaseDatabase.getInstance().goOffline();
FirebaseDatabase.getInstance().goOnline();
您不需要下线然后上网。这将降低在RecycleView中显示数据的速度。如果您是肌酸新FirebaseDatabase
参考,那么您已经连接了。因此,没有必要使用这些方法。
希望它有所帮助。