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