Firebase Database User Surugcting Posts Abrufen nach Android -Recycler -Ansicht in Datum;
Posted: 20 Feb 2025, 09:45
Dies ist meine HomeView Fragmentaktivität
}
Dies ist mein Recyclerview Adapter. Ich muss die Benutzerbeiträge in der Recycler-Ansicht in Android Studio in das Datum sortieren, was aufgrund von Datum und Uhrzeit das neueste bis älteste bedeutet. Ich habe eine Datenbank mit Firebase erstellt. Mein gegenwärtiges Problem ist, dass ich Beiträge mit der Funktion „ReverSelayout) sortiert habe, aber einige Beiträge werden nicht vom neuesten nach ältesten sortiert, da der Benutzer einen Beitrag an die Firebase -Datenbankbeiträge eingereicht hat, die Knoten gemischt werden, wenn der Benutzer einen neuen Beitrag einreicht, nicht der neueste, zu älteste dieses Problem noch in der Firebase -Datenbank. < /p>
}
< /p>
Dies ist meine CustomeuserData -Klasse < /p> nicht funktionieren
Überprüfen /8mvkostk.jpg " /> < /p>
Code: Select all
public class HomeView extends Fragment {
private View view;
private RecyclerView recentPosts;
private DatabaseReference donor_ref;
FirebaseAuth mAuth;
private BloodRequestAdapter restAdapter;
private List postLists;
private ProgressDialog pd;
public HomeView() {
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.home_view_fragment, container, false);
recentPosts = (RecyclerView) view.findViewById(R.id.recyleposts);
recentPosts.setLayoutManager(new LinearLayoutManager(getContext()));
donor_ref = FirebaseDatabase.getInstance().getReference();
postLists = new ArrayList();
pd = new ProgressDialog(getActivity());
pd.setMessage("Loading...");
pd.setCancelable(true);
pd.setCanceledOnTouchOutside(false);
mAuth = FirebaseAuth.getInstance();
getActivity().setTitle("Blood Lak");
restAdapter = new BloodRequestAdapter(postLists);
RecyclerView.LayoutManager pmLayout = new LinearLayoutManager(getContext());
recentPosts.setLayoutManager(pmLayout);
recentPosts.setItemAnimator(new DefaultItemAnimator());
recentPosts.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));
recentPosts.setAdapter(restAdapter);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getContext());
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
recentPosts.setLayoutManager(mLayoutManager);
AddPosts();
return view;
}
private void AddPosts()
{
Query allposts = donor_ref.child("posts");
pd.show();
allposts.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for (DataSnapshot singlepost : dataSnapshot.getChildren()) {
CustomUserData customUserData = singlepost.getValue(CustomUserData.class);
postLists.add(customUserData);
restAdapter.notifyDataSetChanged();
}
pd.dismiss();
}
else
{
Toast.makeText(getActivity(), "No Blood Request Found!",
Toast.LENGTH_LONG).show();
}
pd.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("User", databaseError.getMessage());
}
});
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
Dies ist mein Recyclerview Adapter. Ich muss die Benutzerbeiträge in der Recycler-Ansicht in Android Studio in das Datum sortieren, was aufgrund von Datum und Uhrzeit das neueste bis älteste bedeutet. Ich habe eine Datenbank mit Firebase erstellt. Mein gegenwärtiges Problem ist, dass ich Beiträge mit der Funktion „ReverSelayout) sortiert habe, aber einige Beiträge werden nicht vom neuesten nach ältesten sortiert, da der Benutzer einen Beitrag an die Firebase -Datenbankbeiträge eingereicht hat, die Knoten gemischt werden, wenn der Benutzer einen neuen Beitrag einreicht, nicht der neueste, zu älteste dieses Problem noch in der Firebase -Datenbank. < /p>
Code: Select all
public class BloodRequestAdapter extends RecyclerView.Adapter {
private List postLists;
public class PostHolder extends RecyclerView.ViewHolder {
TextView Name, bloodgroup, Address, contact, posted;
public PostHolder(@NonNull View itemView) {
super(itemView);
Name = itemView.findViewById(R.id.reqstUser);
contact = itemView.findViewById(R.id.targetCN);
bloodgroup = itemView.findViewById(R.id.targetBG);
Address = itemView.findViewById(R.id.reqstLocation);
posted = itemView.findViewById(R.id.posted);
}
}
public BloodRequestAdapter(List postLists)
{
this.postLists = postLists;
}
@Override
public PostHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View listitem = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.request_list_item, viewGroup, false);
return new PostHolder(listitem);
}
@Override
public void onBindViewHolder(@NonNull PostHolder postHolder, final int i ) {
if(i%2==0)
{
postHolder.itemView.setBackgroundColor(Color.parseColor("#C13F31"));
}
else
{
postHolder.itemView.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
/***postHolder.delete.setOnClickListener(new View.OnClickListener() {
String uid;
FirebaseAuth mAuth;
@Override
public void onClick(View v) {
mAuth = FirebaseAuth.getInstance();
FirebaseUser cur_user = FirebaseAuth.getInstance().getCurrentUser();
uid = cur_user.getUid();
FirebaseDatabase.getInstance().getReference()
.child("posts")
.child(mAuth.getCurrentUser().getUid())
.removeValue()
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
}
});
}
}); ***/
CustomUserData customUserData = postLists.get(i);
postHolder.Name.setText("Posted by: "+customUserData.getName());
postHolder.Address.setText("To: "+customUserData.getAddress()+", "+customUserData.getDivision());
postHolder.bloodgroup.setText("Needs "+customUserData.getBloodGroup());
postHolder.posted.setText("Posted on:"+customUserData.getTime()+", "+customUserData.getDate());
postHolder.contact.setText(customUserData.getContact());
}
@Override
public int getItemCount() {
return postLists.size();
}
< /p>
Dies ist meine CustomeuserData -Klasse < /p>
Code: Select all
public class CustomUserData implements Serializable {
private String Address, Division, Contact;
private String Name, BloodGroup;
private String Time, Date;
public CustomUserData() {
}
public CustomUserData(String address, String division, String contact, String name, String bloodGroup, String time, String date) {
Address = address;
Division = division;
Contact = contact;
Name = name;
BloodGroup = bloodGroup;
Time = time;
Date = date;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
this.Address = address;
}
public String getDivision() {
return Division;
}
public void setDivision(String division) {
this.Division = division;
}
public String getContact() {
return Contact;
}
public void setContact(String contact) {
this.Contact = contact;
}
public String getName() {
return Name;
}
public void setName(String name) {
this.Name = name;
}
public String getBloodGroup() {
return BloodGroup;
}
public void setBloodGroup(String bloodGroup) {
this.BloodGroup = bloodGroup;
}
public String getTime() {
return Time;
}
public void setTime(String time) {
this.Time = time;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
this.Date = date;
}
< /code>
} < /p>
Dies ist meine App -Seite. Ich habe diesen Methord mit dem Namen .SetReverSErayout (true) verwendet; mlayoutManager.setStackfromend (true);
Überprüfen /8mvkostk.jpg " /> < /p>