Android 如何保持FirebaseRecyclerAdapter的滚动位置

Android 如何保持FirebaseRecyclerAdapter的滚动位置,android,firebase,android-recyclerview,firebaseui,Android,Firebase,Android Recyclerview,Firebaseui,当我从另一个活动返回到同一活动时,我试图保持FirebaseRecyclerAdapter的滚动位置 这是我的函数,用于设置FirebaseRecyclerAdapter public void setTheScreen(){ FirebaseRecyclerAdapter<Post,PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post,PostViewHolder>(

当我从另一个活动返回到同一活动时,我试图保持FirebaseRecyclerAdapter的滚动位置

这是我的函数,用于设置FirebaseRecyclerAdapter

public void setTheScreen(){
   FirebaseRecyclerAdapter<Post,PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post,PostViewHolder>(
           Post.class,
           R.layout.post_display_blueprint,
           PostViewHolder.class,
           postsNode
   ) {
       @Override
       public void onDataChanged() {
           if(dialog != null && dialog.isShowing()){
               dialog.dismiss();
           }
       }

       @Override
       protected void populateViewHolder(final PostViewHolder viewHolder, Post model, int position) {
           final String key = getRef(position).getKey();
           mRefPosts = FirebaseDatabase.getInstance().getReference().child("posts").child(key);
           mLoveNode = mRef.child("loves");
           mRefLoves = mRef.child("loves").child(key);
           viewHolder.setTitle(model.getTitle());
           viewHolder.setLoves(mRefLoves);
           viewHolder.setLoveButton(Uid,key);
           viewHolder.setImage(getApplicationContext(),model.getImageUrl());


           mRefPosts.addValueEventListener(new ValueEventListener() {
               @Override
               public void onDataChange(DataSnapshot dataSnapshot) {

                   String isAnonymous = dataSnapshot.child("anonymous").getValue(String.class);
                   if (isAnonymous != null && isAnonymous.equals("true")) {
                       viewHolder.anonymousButton.setVisibility(View.VISIBLE);
                   }

               }
               @Override
               public void onCancelled(DatabaseError databaseError) {

               }
           });


            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent intent = new Intent(MainActivity.this,PostDisplayPageActivity.class);
                    intent.putExtra("Key",key);
                    startActivity(intent);

                }
            });
       }
   };
   mRecyclerView.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.notifyDataSetChanged();
从这2个
祝酒
中,我得到了正确的位置,但视图始终从位置0开始

对于我的
RecyclerView
我使用
LinearLayoutManager
作为mRecyclerView.setLayoutManager(mLinearLayoutManager)


有人请告诉我我做错了什么,或者给我一个不同的建议。

我用一个更简单的解决方案解决了我的问题。我刚刚调用了adapter.startListening();在onViewCreated()中,而不是在onStart中,并调用adapter.stopListening();在onDestroyView()中而不是在onStop()中 这使得整个列表在从下一个活动返回时无法重新生成,因此保留了以前的滚动位置

 @Override
protected void onPause() {
    super.onPause();

    currentVisiblePosition = ((LinearLayoutManager)mRecyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
    Toast.makeText(MainActivity.this,String.valueOf(currentVisiblePosition),Toast.LENGTH_SHORT).show();

}

@Override
protected void onResume() {
    super.onResume();

    setTheScreen();
    mRecyclerView.getLayoutManager().scrollToPosition(currentVisiblePosition);
    Toast.makeText(MainActivity.this,String.valueOf(currentVisiblePosition),Toast.LENGTH_SHORT).show();
    currentVisiblePosition = 0;


}