Tôi biết cách sử dụng FirebaseRecyclerAdapter
trên danh sách các mục trong Firebase. Tôi cũng biết cách lấy dữ liệu Firebase từ nhiều vị trí bằng cách sử dụng chỉ mục. Nhưng tôi không biết cách kết hợp điều này với FirebaseRecyclerAdapter.Cách sử dụng FirebaseRecyclerAdapter với tham chiếu động trong Android?
Tôi có một cấu trúc dữ liệu đơn giản mà người dùng có thể được bạn bè:
"users": {
"user1": {
"name": "name",
"friends": {
"user2": "true"
}
}
"user2": {
"name": "name",
"friends": {
"user1": "true"
}
}
}
tôi sử dụng id duy nhất cho tên người dùng. Trong ví dụ đơn giản này, người dùng 1 và người dùng 2 là bạn bè. Những gì tôi muốn làm, là có được một danh sách của tất cả các tên (và sau này có thể nhiều hơn) bằng cách sử dụng một FirebaseRecyclerAdapter. Thông thường, tôi sẽ nhận được một danh sách bằng cách lấy id người dùng dưới "bạn bè" và sau đó sử dụng các id đó để điều hướng đến tên của họ. Trong Java, nó sẽ giống như sau:
Firebase ref = new Firebase("<reference>");
ref.child("users/user1/friends").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String userId = snapshot.getKey();
ref.child("users/" + userId + "/name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
// Do something here
}
});
}
});
Nhưng khi sử dụng FirebaseRecyclerAdapter, bạn chỉ có thể xác định một URL. Bộ điều hợp sẽ tạo danh sách dựa trên các mục ở một nơi duy nhất.
Có cách nào để điều chỉnh bộ điều hợp để nó đọc dữ liệu từ nhiều nơi, giống như cách mà ví dụ trên không? Hoặc có cách nào để tạo biến thay đổi động chỉ trỏ đến id người dùng cũng được lưu trữ trong danh sách "bạn bè" của người dùng hiện tại không? Tôi đã suy nghĩ về việc sử dụng phương thức equals(), nhưng tôi không thể tìm ra chính xác như thế nào.
Một cách khác sẽ lưu trữ tên người dùng cũng trong danh sách "bạn bè". Nhưng điều đó sẽ không cải thiện cấu trúc dữ liệu. Tôi sẽ phải thay đổi tên ở hai nơi mỗi lần (và có thể là hình ảnh sau này) và nó sẽ giới thiệu nhiều dự phòng hơn.
Có ai có giải pháp cho vấn đề này không? Tôi không thể tìm thấy câu trả lời ở bất cứ nơi nào nhưng nó có vẻ giống như một mô hình chung. Và ngoài việc làm cho nó hoạt động, làm thế nào để tôi làm điều đó một cách hiệu quả?
phải đối mặt với sự cố sau khi sử dụng phương pháp bạn đã mô tả trong câu trả lời này ... hãy trợ giúp với nó: http://stackoverflow.com/q/41921120/6144372 –
Tôi đã tìm ra sự cố gây ra sự cố như đã nêu trong câu hỏi trước của tôi ... Tôi đã đăng một câu hỏi khác dựa trên vấn đề đó. Hãy xem xét việc xem xét: http://stackoverflow.com/q/41925181/6144372 Cảm ơn! –