My application has a main activity with a list of items (let's say item A and item B), every item will launch the same activity (UserGalleryActivity) but the recyclerView inside the Activity should display only the items related to the item (let's call it A) selected in the MainActivity.
My problem is, if I select first (for example) the item A, it works correctly and the RecyclerView in the UserGalleryActivity display only the A's items, but then, when I go back to the MainActivity and select B, the UserGalleryActivity show me the A's items AND also the B's items.
How can I fix this issue? any idea? Thank you in advance
Code of the UserGalleryActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_gallery);
//L'activity riceve tramite intent dal main l'oggetto User
Intent intent = getIntent();
int user = intent.getIntExtra("user", -1);
System.out.println("UserIndex: " + user);
System.out.println(UsersSingleton.getInstance().getArray().get(user).getPhotos().size());
if(user >= 0 && user<=UsersSingleton.getInstance().getArray().size()){
String username = UsersSingleton.getInstance().getArray().get(user).getUsername();
username = username.substring(0, 1).toUpperCase() + username.substring(1);
UserGalleryActivity.this.setTitle(username);
System.out.println("UserIndex: " + user);
//System.out.println(UsersSingleton.getInstance().getArray().get(user).getPhotos().get(0).toString());
setRecycleView(user);
}
}
//Al termine della creazione dell'arraylist di users viene invocata setReView con parameto l'arraylist creato
private void setRecycleView(int userIndex){
RecyclerView recyclerView = findViewById(R.id.photosList);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this,2);
recyclerView.setLayoutManager(layoutManager);
MyAdapterPhotos adapter = new MyAdapterPhotos(this, userIndex);
recyclerView.setAdapter(adapter);
Code of MyAdapterPhotos:
private int usersIndex;
private Context context;
JSONHelper jsonHelper;
URLHelper urlHelper;
ArrayList<Photo> photosList;
//Bitmap bitmap;
public MyAdapterPhotos(Context context, int usersList) {
this.context = context;
this.usersIndex = usersList;
jsonHelper = new JSONHelper();
urlHelper = new URLHelper();
photosList = new ArrayList<>();
}
@NonNull
@Override
public MyAdapterPhotos.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cell_layout_gallery,
viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
if (UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().get(position) != null){
holder.title.setText(UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().get(position).getCity());
holder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);//prima era centercrop
String username = UsersSingleton.getInstance().getArray().get(usersIndex).getUsername();
username = username.substring(0, 1).toUpperCase() + username.substring(1);
holder.author.setText(username);
System.out.println("Numero di Foto: " + UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().size());
System.out.println("Posizione: " + position);
System.out.println(UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().get(position).toString());
setImage(UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().get(position).getSmall(), holder.img);
}
}
@Override
public int getItemCount() {
return UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView title;
private ImageView img;
private TextView author;
public ViewHolder(View view){
super(view);
title = view.findViewById(R.id.title_g);
img = view.findViewById(R.id.img_g);
author = view.findViewById(R.id.author_g);
// on image item click
img.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// get position
int pos = getAdapterPosition();
// check if item still exists
if(pos != RecyclerView.NO_POSITION){
int clickedDataItem = pos;
/* for future animation
if (img.getDrawable() != null) {
bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap();
} */
//se l'array di photo dell'utente è ancora vuoto, scaricale. altrimenti usa quelle che hai gia
Intent photosIntent = new Intent(context, PhotoDetailActivity.class);
photosIntent.putExtra("user", usersIndex);
photosIntent.putExtra("photo", clickedDataItem);
context.startActivity(photosIntent);
/* for future animations
ActivityTransitionLauncher.with((AppCompatActivity) context)
.from(img)
.image(bitmap)
.launch(photosIntent);*/
//se l'array di photo dell'utente è ancora vuoto, scaricale. altrimenti usa quelle che hai gia
}
}
});
// on title item click
view.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// get position
int pos = getAdapterPosition();
// check if item still exists
if(pos != RecyclerView.NO_POSITION){
//Photo clickedDataItem = UsersSingleton.getInstance().getArray().get(usersIndex).getPhotos().get(pos);
int clickedDataItem = pos;
//se l'array di photo dell'utente è ancora vuoto, scaricale. altrimenti usa quelle che hai gia
Intent photosIntent = new Intent(context, PhotoDetailActivity.class);
photosIntent.putExtra("user", usersIndex);
photosIntent.putExtra("photo", clickedDataItem);
context.startActivity(photosIntent);
//Toast.makeText(v.getContext(), "You clicked " + clickedDataItem, Toast.LENGTH_SHORT).show();
}
}
});
}
}
// metodo set immagine dell'utente dell'imageview
private void setImage(String imageUrl, ImageView img){
CircularProgressDrawable circularProgressDrawable =
new CircularProgressDrawable(context);
circularProgressDrawable.setStrokeWidth(5f);
circularProgressDrawable.setCenterRadius(30f);
circularProgressDrawable.start();
GlideApp.with(context)
.load(imageUrl)
.placeholder(circularProgressDrawable)
.into(img);
}