U
Utente 399201
Ospite
Buonasera a tutti,
come scritto nel titolo sto avendo un problema con una recyclerview.
In pratica cliccando su un opzione la prima volta mi funziona correttamente (quindi mi apre l'activity che mi deve aprire con l'arraylist che deve), però, se torno indietro e riclicco su quell'opzione, mi riapre l'activity ma mi stampa l'arraylist due volte.
Com'è possibile? Grazie in anticipo
Activity RecyclerView
Activity che mi apre
RecyclerView della seconda Activity
come scritto nel titolo sto avendo un problema con una recyclerview.
In pratica cliccando su un opzione la prima volta mi funziona correttamente (quindi mi apre l'activity che mi deve aprire con l'arraylist che deve), però, se torno indietro e riclicco su quell'opzione, mi riapre l'activity ma mi stampa l'arraylist due volte.
Com'è possibile? Grazie in anticipo
Activity RecyclerView
Java:
public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.MyViewHolder>{
public ArrayList<Album> arrayCanzoni;
Context mContext;
LayoutInflater inflater;
public AlbumAdapter(Context mContext, ArrayList<Album> arrayCanzoni) {
this.arrayCanzoni = arrayCanzoni;
this.mContext = mContext;
this.inflater = LayoutInflater.from(mContext);
}
@NonNull
@Override
public AlbumAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.element_album,parent,false));
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull AlbumAdapter.MyViewHolder holder, int position) {
holder.nomeAlbum.setText(arrayCanzoni.get(position).getAlbum());
holder.tipoAlbum.setText(arrayCanzoni.get(position).getTipo() + "\n" + arrayCanzoni.get(position).getData());
holder.imgAlbum.setImageResource(arrayCanzoni.get(position).getAlbumPhoto());
}
@Override
public int getItemCount() {
return arrayCanzoni.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView nomeAlbum,tipoAlbum;
ImageView imgAlbum;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imgAlbum = itemView.findViewById(R.id.imgAlbum);
nomeAlbum = itemView.findViewById(R.id.albumNome);
nomeAlbum.setSelected(true);
tipoAlbum = itemView.findViewById(R.id.tipoAlbumAnno);
ArrayList<Canzone> arrayCanzoni = new ArrayList<>();
itemView.setOnClickListener(v -> {
switch (getAdapterPosition()){
case 0:
arrayCanzoni.add(new Canzone("Took your name","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Valium","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("DMS 10","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Froggs Eggs","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Across","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Stinky Louse","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("High Heart Corporation","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Wonder","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Leasy Creep","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Porno Dolls Rubber","Lyrics for this song have yet to be released"));
arrayCanzoni.add(new Canzone("Velvet","Lyrics for this song have yet to be released"));
break;
case 1:
// va avanti come sopra
break;
}
Intent intent = new Intent(mContext,CanzoniActivity.class);
intent.putExtra("arrayCanzoni",arrayCanzoni);
mContext.startActivity(intent);
});
}
}
}
Activity che mi apre
Java:
public class CanzoniActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_canzoni);
RecyclerView recyclerView = findViewById(R.id.recyclerViewCanzoni);
ArrayList<Canzone> arrayList = (ArrayList<Canzone>) getIntent().getSerializableExtra("arrayCanzoni");
CanzoniAdapter adapter = new CanzoniAdapter(this,arrayList);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this,1, RecyclerView.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
}
}
RecyclerView della seconda Activity
Java:
public class CanzoniAdapter extends RecyclerView.Adapter<CanzoniAdapter.MyViewCanzoniHolder>{
ArrayList<Canzone> arrayCanzone;
Context mContext;
LayoutInflater inflater;
public CanzoniAdapter(Context mContext,ArrayList<Canzone> arrayList) {
this.arrayCanzone = arrayList;
this.mContext = mContext;
this.inflater = LayoutInflater.from(mContext);
}
@NonNull
@Override
public CanzoniAdapter.MyViewCanzoniHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyViewCanzoniHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.element_canzoni, parent, false));
}
@Override
public void onBindViewHolder(@NonNull CanzoniAdapter.MyViewCanzoniHolder holder, @SuppressLint("RecyclerView") int position) {
holder.titolo.setText(arrayCanzone.get(position).getTitles());
holder.itemView.setOnClickListener(v -> {
Intent intent = new Intent(mContext,TestoActivity.class);
intent.putExtra("testo",arrayCanzone.get(position).getTesto());
intent.putExtra("titolo",arrayCanzone.get(position).getTitles());
mContext.startActivity(intent);
});
}
@Override
public int getItemCount() {
return arrayCanzone.size();
}
public static class MyViewCanzoniHolder extends RecyclerView.ViewHolder {
private final TextView titolo;
public MyViewCanzoniHolder(@NonNull View itemView) {
super(itemView);
this.titolo = itemView.findViewById(R.id.textSong);
this.titolo.setSelected(true);
}
}
}