Я использую фрагменты внутри этого я выбираю данные из базы данных Firebase. Я использую представление карты для отображения данных, щелкая каждое представление карты, которое я достигаю для нового действия, но когда я нажимаю кнопку «Назад», загрузчик повторного просмотра загружается снова, и страница просмотра повторного запуска начинается сверху. Я хочу сохранить позицию просмотра рециркулятора. Пожалуйста, помогите, как сохранить позицию просмотра прокрутки.
public class StationaryDetailFragment extends Fragment {
private RecyclerView pendingOrder_row;
private DatabaseReference orderDatabase;
FirebaseRecyclerAdapter orderRecyclerAdapter;
private DatabaseReference databaseReference;
private String rollnumber , mobilenumber, collegename, hostelname, key;
private ArrayList<String> title2 = new ArrayList<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = inflater.inflate(R.layout.fragment_stationarydetail, container, false);
pendingOrder_row = v.findViewById(R.id.pendingOrder_row);
pendingOrder_row.setHasFixedSize(true);
pendingOrder_row.setLayoutManager(new LinearLayoutManager(getContext()));
orderDatabase = FirebaseDatabase.getInstance().getReference().child("StationaryConfirmOrder");
orderDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
key= dataSnapshot.getKey();
title2.add(key);
Log.i("key",key);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return v;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerOptions<details> optioner =
new FirebaseRecyclerOptions.Builder<details>()
.setQuery(orderDatabase, details.class)
.setLifecycleOwner(this)
.build();
orderRecyclerAdapter = new FirebaseRecyclerAdapter<details, orderViewHolder>(optioner){
@NonNull
@Override
public orderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new orderViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.stat_order_cnfrow, parent, false));
}
@Override
protected void onBindViewHolder(@NonNull final orderViewHolder holder, int position, @NonNull details model) {
final String userid = model.getUserid();
final String price = model.getPrice();
final String Quantity = model.getQuantity();
final String Name = model.getName();
final String key2 = title2.get(position);
holder.setUserId(key2);
databaseReference = FirebaseDatabase.getInstance().getReference("User").child(userid);
databaseReference.keepSynced(true);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
rollnumber = dataSnapshot.child("rollNumber").getValue().toString();
mobilenumber = dataSnapshot.child("mobileNumber").getValue().toString();
collegename = dataSnapshot.child("collegeName").getValue().toString();
hostelname = dataSnapshot.child("hostelName").getValue().toString();
Log.i("user", rollnumber+"/"+ mobilenumber+"/"+collegename+"/"+hostelname);
holder.setName(rollnumber);
holder.setPrice(hostelname +", "+ collegename);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
holder.orderCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Intent orderDetail = new Intent(getActivity(),stat_con_order.class);
orderDetail.putExtra("userid",userid);
orderDetail.putExtra("price",price);
orderDetail.putExtra("Quantity",Quantity);
orderDetail.putExtra("Name",Name);
orderDetail.putExtra("orderid",key2);
startActivity(orderDetail);
}
});
}
@Override
public int getItemCount() {
return title2.size();
}
};
pendingOrder_row.setAdapter(orderRecyclerAdapter);
orderRecyclerAdapter.notifyDataSetChanged();
pendingOrder_row.smoothScrollToPosition(0);
}
public static class orderViewHolder extends RecyclerView.ViewHolder {
View view;
RelativeLayout orderCard;
public orderViewHolder(@NonNull View itemView) {
super(itemView);
view =itemView;
orderCard = itemView.findViewById(R.id.orderCard);
}
public void setName(String Name){
TextView rollTextView = (TextView) view.findViewById(R.id.rollTextView);
rollTextView.setText(Name);
}
public void setPrice(String Price){
TextView mobileTextView = (TextView) view.findViewById(R.id.mobileTextView);
mobileTextView.setText(Price);
}
public void setUserId(String userId){
TextView orderidTextView = (TextView) view.findViewById(R.id.orderidTextView);
orderidTextView.setText(userId);
}
}
}