我正在开发一个应用程序,其中我从Firebase
数据库中检索一些数据。
问题在于每次我保存某些东西时,它都会被检索并被添加到RecyclerView
的底部。
我想要的是我希望新添加的数据被添加到recyclerview的顶部而不是底部。
我不知道该怎么做我想做的事。
请告诉我。
答案 0 :(得分:4)
首先问题是关于recyclerview
并且您发布了数据检索的代码。如果您想将新项目添加到回收站视图,请使用
mArrayList.add(position, item);
notifyItemInserted(position);
要在第一行中插入数据使用
mArrayList.add(0, item);
notifyItemInserted(0);
然后您可以使用mRecyclerView.smoothScrollToPosition(0);
滚动到顶部。
答案 1 :(得分:2)
尝试类似
的内容Query lastToFirstQuery = databaseReference.orderBy("something_in_your_database").limitToLast(datasnapshot.numChildren());
lastToFirstQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue();
imageUID = newRequest.get("imageUIDh");
hDescription = newRequest.get("hDescription");
currentLat = newRequest.get("currentLat");
currentLng = newRequest.get("currentLng");
postedBy = newRequest.get("postedBy");
postedAtTime = newRequest.get("postedAtTime");
postedOnDate = newRequest.get("postedOnDate");
utcFormatDateTime = newRequest.get("utcFormatDateTime");
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Snackbar snackbar = Snackbar
.make(coordinatorLayout, databaseError.getMessage(), Snackbar.LENGTH_LONG);
snackbar.setDuration(Snackbar.LENGTH_SHORT);
snackbar.show();
progressBarLoading.setVisibility(View.INVISIBLE);
}
});