Я разработал приложение для обоев, используя базу данных Firebase для извлечения изображений в recyclerview
, recyclerview
находится в действии listWallpaper
(код ниже), когда я нажимаю на изображение, другое действие показывает viewWallpaper
, проблема в том, когда я go вернусь с viewWallpaper
на listWallpaper
, recyclerview
показывает изображения сверху, я хочу, чтобы резюме recyclerview
продолжалось с той же позиции. нужно решение, как это решить, спасибо
public class ListWallpaper extends AppCompatActivity {
Query query;
FirebaseRecyclerOptions<WallpaperItem> options;
FirebaseRecyclerAdapter<WallpaperItem,ListWallpaperViewHolder> adapter;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_wallpaper);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// Toolbar
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
toolbar.setTitle(Common.CATEGORY_SELECTED);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(android.graphics.Color.WHITE); // TOOLBAR TEXT COLOR
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
// recyclerView
recyclerView = (RecyclerView)findViewById(R.id.recycler_list_wallpaper);
recyclerView.setHasFixedSize(true);
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
loadBackgroundList();
}
private void loadBackgroundList() {
query = FirebaseDatabase.getInstance().getReference(Common.STR_WALLPAPER)
.orderByChild("categoryId").equalTo(Common.CATEGORY_ID_SELECTED);
options = new FirebaseRecyclerOptions.Builder<WallpaperItem>()
.setQuery(query,WallpaperItem.class)
.build();
adapter = new FirebaseRecyclerAdapter<WallpaperItem, ListWallpaperViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final ListWallpaperViewHolder holder, int position, @NonNull final WallpaperItem model) {
Picasso.with(getBaseContext())
.load(model.getImageLink())
.networkPolicy(NetworkPolicy.OFFLINE)
.into(holder.wallpaper, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Picasso.with(getBaseContext())
.load(model.getImageLink())
.error(R.drawable.ic_bg)
.into(holder.wallpaper, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Log.e("ERROR", "Could not fetch image");
}
});
}
});
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position) {
Intent intent = new Intent(ListWallpaper.this,ViewWallpaper.class);
Common.select_background = model;
select_background_key = adapter.getRef(position).getKey();
startActivity(intent);
}
});
}
@NonNull
@Override
public ListWallpaperViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_wallpaper_item,parent,false);
int height = parent.getMeasuredHeight()/2;
itemView.setMinimumHeight(height);
return new ListWallpaperViewHolder(itemView);
}
};
adapter.stopListening();
recyclerView.setAdapter(adapter);
}
@Override
protected void onStart() {
super.onStart();
if (adapter != null)
adapter.startListening();
}
@Override
protected void onResume() {
super.onResume();
if (adapter != null)
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
if (adapter != null)
adapter.stopListening();
super.onStop();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home)
finish(); // close activity when click back button
return super.onOptionsItemSelected(item);
}
}