Ich benutze Firebase und ich muss Kinder auf den RecyclerView nicht FirebaseRecyclerAdapter abrufen, damit ich die Kinder zum RecyclerView abrufen muss.Firebase-Kinder zu RecyclerView
Hier ist meine Firebase Datenbankstruktur:
"Following" : {
"ORBBKfZAAUhqI1h7ojQDzYOjgkp1" : {
"pypD1SYZkbcYesk09WuMUY1AkTf1" : {
"UID" : "pypD1SYZkbcYesk09WuMUY1AkTf1"
},
"z2SNUlLd6mQM8nnlkU2VUws5Ggl2" : {
"UID" : "z2SNUlLd6mQM8nnlkU2VUws5Ggl2"
}
},
"Posts" : {
"-KduqnVVczZf5uibQiZ-" : {
"Describe" : "gg",
"MostView" : -8,
"Time" : 14881230655,
"UID" : "pypD1SYZkbcYesk09WuMUY1AkTf1",
"Username" : "Jone",
"Wallpaper" : "https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped906285501.jpg?alt=media&token=0c1a3a3d-6e48-4c4e-ba59-f5646bf8965f"
},
"-Ke5gJ00CxbjhOuhzLIx" : {
"Describe" : "hajj",
"MostView" : -9,
"Time" : 1488318465,
"UID" : "pypD1SYZkbcYesk09WuMUY1AkTf1",
"Username" : "Dom",
"Wallpaper" : "https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1717103943.jpg?alt=media&token=a85b2488-5ac7-49a7-9ad0-dbf4e6f29389"
},
"-KeCuiFmUCpN19zwsTsR" : {
"Describe" : "a",
"MostView" : -2,
"Profile" : "https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg",
"Time" : 1488439652,
"UID" : "z2SNUlLd6mQM8nnlkU2VUws5Ggl2",
"Username" : "Dom",
"Wallpaper" : "https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1913886685.jpg?alt=media&token=c8ad26b2-8f09-453b-b48a-aad9e4d8b5c3"
},
"-KeD2fBUQ09HVMrvAneb" : {
"Describe" : "ee",
"MostView" : -2,
"Profile" : "https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg",
"Time" : 1488441999,
"UID" : "z2SNUlLd6mQM8nnlkU2VUws5Ggl2",
"Username" : "Dom",
"Wallpaper" : "https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1904338270.jpg?alt=media&token=d200b7fc-15e7-4dc4-9913-59c377929e9e"
},
"-KeDfnMWiB7k_4J3FBgZ" : {
"Describe" : "f12g",
"MostView" : -1,
"Time" : 1488452517,
"UID" : "ORBBKfZAAUhqI1h7ojQDzYOjgkp1"
"Username" : "Young",
"Wallpaper" : "https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1872832638.jpg?alt=media&token=80239844-a872-47e2-9689-92d368dd9452"
},
"-KeDfrw4inUQFtIDXJHp" : {
"Describe" : "fg",
"MostView" : -2,
"Time" : 1488452536,
"UID" : "ORBBKfZAAUhqI1h7ojQDzYOjgkp1"
"Username" : "Young",
"Wallpaper" : "https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1872832638.jpg?alt=media&token=80239844-a872-47e2-9689-92d368dd9452"
},
}
}
I Beitrag für die folgenden Benutzer zu zeigen, brauchen nur so habe ich diese Methode:
mPostList = (RecyclerView) v.findViewById(R.id.MainPostList);
mPostList.setHasFixedSize(true);
mPostList.setItemAnimator(new DefaultItemAnimator());
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
mPostList.setLayoutManager(layoutManager);
mAuth = FirebaseAuth.getInstance();
mCurrentUser = mAuth.getCurrentUser();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Posts");
mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users");
mDatabaseFriends = FirebaseDatabase.getInstance().getReference().child("Following").child(mCurrentUser.getUid());
return v;
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mListener);
mDatabaseFriends.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot2) {
for (DataSnapshot GettingFollowingList : dataSnapshot2.getChildren()){
mDatabase.orderByChild("UID").equalTo(GettingFollowingList.getKey()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot Q : dataSnapshot.getChildren()){
Adapter MyAdapter = Q.getValue(Adapter.class);
mPostList.setAdapter(MyAdapter);}}
@Override
public void onCancelled(DatabaseError databaseError) {
}});}}
@Override
public void onCancelled(DatabaseError databaseError) {
}});
Und hier ist mein Adapter:
class Adapter extends RecyclerView.Adapter<PostViewHolder> {
ArrayList<Getting_Posts> mdataSet;
public Adapter(ArrayList<Getting_Posts> dataSet){
mdataSet = dataSet;
}
@Override
public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_card_design, parent, false);
return new PostViewHolder(inflatedView);
}
@Override
public void onBindViewHolder(final PostViewHolder holder, int position) {
Getting_Posts model = mdataSet.get(position);
//model.getTime();
//holder.mPostTime.setText("Q");
// Set the properties of the holder
// I don't know what properties you used in the viewholder so I'll just give an example
// example: holder.Name.setText(post.getName());
}
@Override
public int getItemCount() {
return mdataSet.size();
}
public void add(int position, Getting_Posts post) {
mdataSet.add(position, post);
notifyItemInserted(position);
}
Und hier ist mein erster Beitrag:
public class Getting_Posts {
//Post
private Long Time;
private String Describe;
private String Wallpaper;
private String Username;
private String ProfilePic;
public Getting_Posts() {}
public Getting_Posts
(Long Time,
String Describe,
String Wallpaper,
String Username;
String ProfilePic;
) {
this.Time = Time;
this.Describe = Describe;
this.Wallpaper = Wallpaper;
this.Username = Username;
this.ProfilePic = ProfilePic;
}
public Long getTime() {
return Time;
}
public void setTime(Long time) {
Time = time;
}
public String getDescribe() {
return Describe;
}
public void setDescribe(String describe) {
Describe = describe;
}
public String getWallpaper() {
return Wallpaper;
}
public void setWallpaper(String wallpaper) {
Wallpaper = wallpaper;
}
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public String getProfilePic() {
return ProfilePic;
}
public void setProfilePic(String profilepic) {
ProfilePic = profilepic;
}
aber Ich bin immer diese Fehlermeldung:
com.google.firebase.database.DatabaseException: Class com.pcsoftgroup.test.fragments.Adapter is missing a constructor with no arguments
at com.google.android.gms.internal.zzalq$zza.zze(Unknown Source)
at com.google.android.gms.internal.zzalq$zza.zzcc(Unknown Source)
at com.google.android.gms.internal.zzalq.zzd(Unknown Source)
at com.google.android.gms.internal.zzalq.zzb(Unknown Source)
at com.google.android.gms.internal.zzalq.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.pcsoftgroup.test.fragments.MainChallenges$3$1.onDataChange(MainChallenges.java:151)
Sorry @Gabriele, aber ich konnte nicht gut verstehen, können Sie mir bitte einen kompletten Anawer geben. – 7uthaifah
@ 7uthaifah Sie sollten etwas in Ihrer Logik ändern. Ich habe gerade die Antwort mit einer einfachen Idee bearbeitet. Es ist ziemlich schwierig, hier die ganze Logik zu schreiben. –
bedenken Sie, dass ich RecyclerView neu benutze, weil ich FirebaseRecyclerAdapter benutzt habe, aber ich habe meine Meinung geändert und benutze RecyclerView, also bitte, können Sie mir die vollständige Antwort geben und entschuldigen Sie das Nehmen aus Ihrer Zeit, bitte helfen Sie mir Bruder . – 7uthaifah