Android Don';返回活动时刷新RecyclerView

Android Don';返回活动时刷新RecyclerView,android,android-recyclerview,Android,Android Recyclerview,我已经实现了一个应用程序,当我点击项目时,我正在使用RecyclerView。当我点击后退时,我将转到另一个活动以显示该项目的详细信息。我希望重新加载RecyclerView,使后退按钮返回到recylerView中的相同位置 请帮助我搜索了很多,但我没有找到任何东西 我的代码是: public class Optimism extends AppCompatActivity { RecyclerView recyclerView; FirebaseDatabase mFireb

我已经实现了一个应用程序,当我点击项目时,我正在使用RecyclerView。当我点击后退时,我将转到另一个活动以显示该项目的详细信息。我希望重新加载RecyclerView,使后退按钮返回到recylerView中的相同位置 请帮助我搜索了很多,但我没有找到任何东西 我的代码是:

public class Optimism extends AppCompatActivity {
    RecyclerView recyclerView;
    FirebaseDatabase mFirebaseDatabase;
    DatabaseReference mdatabaseReference;
    LinearLayoutManager linearLayoutManager;
    Parcelable mListState;
    ArrayList<items>ar;

    ImageView saveImage;

    public static Optimism getOpt() {
        return opt;
    }

    static Optimism opt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_optimism);

        opt = this;
        final ProgressBar progressBar = findViewById(R.id.progressBar);
        Drawable d = getResources().getDrawable(R.drawable.progress);
        progressBar.setProgressDrawable(d);
        //back botton
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }
        //reycyclerView
        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true);
        linearLayoutManager.setStackFromEnd(true);
        recyclerView.setLayoutManager(linearLayoutManager);

        //get type
        String type = getIntent().getStringExtra("Type");
        //ActionBar
        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle(type);
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);


        //firebase
        mFirebaseDatabase = FirebaseDatabase.getInstance();
        mdatabaseReference = mFirebaseDatabase.getReference(type);
        mdatabaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    progressBar.setVisibility(View.GONE);
                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(Optimism.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();

            }
        });
        mdatabaseReference.keepSynced(true);


    }

    @Override
    protected void onStart() {
        super.onStart();
        final FirebaseRecyclerAdapter<items, RecycleViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<items, RecycleViewHolder>(
                items.class,
                R.layout.card_view_design,
                RecycleViewHolder.class
                , mdatabaseReference) {
            @Override
            protected void populateViewHolder(RecycleViewHolder viewHolder, items model, int position) {

                viewHolder.setDetails(getApplicationContext(), model.getImage(), model.getTitle());

            }

            @Override
            public RecycleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                final RecycleViewHolder recycleViewHolder = super.onCreateViewHolder(parent, viewType);

                recycleViewHolder.setOnClickListener(new RecycleViewHolder.ClickListener() {
                    @Override
                    public void onItemClick(View view, int position) {
                        ImageView imageView = view.findViewById(R.id.img);
                        TextView title = view.findViewById(R.id.title);

                        Drawable drawable = imageView.getDrawable();
                        Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
                        Intent intent = new Intent(Optimism.this, PostDetails.class);
                        BitmapHelper.getInstance().setBitmap(bitmap);
                        intent.putExtra("title", title.getText().toString());
                        startActivity(intent);
                    }


                });
                return recycleViewHolder;
            }
        };

        recyclerView.setAdapter(firebaseRecyclerAdapter);


    }

    //back botton
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) ;
        finish();
        return super.onOptionsItemSelected(item);

    }

}
公共类活动{
回收视图回收视图;
FirebaseDatabase mFirebaseDatabase;
数据库引用mdatabaseReference;
直线布局经理直线布局经理;
可包裹状态;
ArrayListar;
图像查看保存图像;
公共静态乐观主义getOpt(){
返回opt;
}
静态乐观选择;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_);
opt=这个;
最终ProgressBar ProgressBar=findViewById(R.id.ProgressBar);
Drawable d=getResources().getDrawable(R.Drawable.progress);
progressBar.setProgressDrawable(d);
//背波顿
如果(getSupportActionBar()!=null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
//雷克尔维
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
linearLayoutManager=新的linearLayoutManager(此,linearLayoutManager.VERTICAL,true);
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);
//获取类型
字符串类型=getIntent().getStringExtra(“类型”);
//操作栏
ActionBar ActionBar=getSupportActionBar();
actionBar.setTitle(类型);
actionBar.setDisplayShowHomeEnabled(真);
actionBar.setDisplayHomeAsUpEnabled(true);
//火基
mFirebaseDatabase=FirebaseDatabase.getInstance();
mdatabaseReference=mFirebaseDatabase.getReference(类型);
mdatabaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.exists()){
progressBar.setVisibility(View.GONE);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Toast.makeText(optimination.this,databaseError.getMessage(),Toast.LENGTH_LONG.show();
}
});
mdatabaseReference.keepSynced(true);
}
@凌驾
受保护的void onStart(){
super.onStart();
最终FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(
物品类别,
R.layout.card\u view\u设计,
RecycleViewWolder.class
,mdatabaseReference){
@凌驾
受保护的void populateViewHolder(可循环使用的文件夹viewHolder、项目模型、int位置){
setDetails(getApplicationContext(),model.getImage(),model.getTitle());
}
@凌驾
public RecycleViewHolder onCreateViewHolder(视图组父级,int-viewType){
最终RecycleViewHolder RecycleViewHolder=super.onCreateViewHolder(父级,视图类型);
recycleViewHolder.setOnClickListener(新的recycleViewHolder.ClickListener(){
@凌驾
公共虚线单击(视图,int位置){
ImageView ImageView=view.findViewById(R.id.img);
TextView title=view.findviewbyd(R.id.title);
Drawable Drawable=imageView.getDrawable();
位图位图=((BitmapDrawable)drawable.getBitmap();
意向意向=新意向(乐观主义.this,PostDetails.class);
BitmapHelper.getInstance().setBitmap(位图);
intent.putExtra(“title”,title.getText().toString());
星触觉(意向);
}
});
返回回收站;
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
//背波顿
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
if(item.getItemId()==android.R.id.home);
完成();
返回super.onOptionsItemSelected(项目);
}
}

正如您在随附的活动生命周期图片中所看到的,当您重新输入活动时,将调用
onStart

因此,您应该将所有代码
onStart
onCreate
,在您的用例中只调用一次

这里有一个刷新
RecyclerView
RecyclerView.setAdapter
的代码


参考:

当您从Activity1转到Activity2时,将所选位置存储在变量中,当您从Activity2返回Activity1时,常用方法将调用start()

在这种方法中,请保留此代码


recyclerView.getLayoutManager().scrollToPosition(position)

这会很有帮助的。我想你帮了我很多