Estou tentando enviar textos de uma Activity para a outra, porém uma delas é uma Recycler View. Tudo funciona normalmente, porém quando desço a tela alguns dados são perdidos, principalmente os que estão fora da tela. Quando mantenho a tela parada e clico nos botões ou subo a tela, funciona normalmente. Segue o código de meu Adapter: public class AdapterLanches extends RecyclerView.Adapter<AdapterLanches.MyViewHolder> implements Filterable { public static MaterialFavoriteButton favoriteButton; private List<Lanches> listaLanches; private List<Lanches> listaLanchesCompleta; public static Lanches itemAtual; ArrayList<CharSequence> favoritos; boolean fav = false; int estadoPrograma; public Button lc,fit; int posicao = -1; public class MyViewHolder extends RecyclerView.ViewHolder { public MaterialFavoriteButton favoriteButton; TextView titulo; RecyclerView recyclerView; public MyViewHolder(@NonNull View itemView) { super(itemView); lc = itemView.findViewById(R.id.lc); fit = itemView.findViewById(R.id.fit); favoriteButton = itemView.findViewById(R.id.favorite); favoriteButton.setOnFavoriteChangeListener(new MaterialFavoriteButton.OnFavoriteChangeListener() { @Override public void onFavoriteChanged(MaterialFavoriteButton buttonView, boolean favorite) { final int posicao = getAdapterPosition(); fav = favorite; favoritos.add(listaLanchesCompleta.get(posicao).getTitulo()); VeganoActivity.intentLanches2.putExtra("titulo", favoritos); System.out.println(favoritos); } }); titulo = itemView.findViewById(R.id.textnomeLanchesId); favoritos = new ArrayList<>(); } } public AdapterLanches(List<Lanches> listaLanches) { this.listaLanches = listaLanches; listaLanchesCompleta = new ArrayList<>(this.listaLanches); } @Override public Filter getFilter() { return lanchesFilter; } public Filter lanchesFilter = new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { List<Lanches> filteredList = new ArrayList<>(); if (constraint == null || constraint.length() == 0){ filteredList.addAll(listaLanchesCompleta); }else{ estadoPrograma = 1; String filterPattern = constraint.toString().toLowerCase().trim(); for ( Lanches item : listaLanchesCompleta){ if (item.getTitulo().toLowerCase().contains(filterPattern)){ filteredList.add(item); } } } FilterResults results = new FilterResults(); results.values = filteredList; results.count = filteredList.size(); return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { listaLanches.clear(); listaLanches.addAll((ArrayList<Lanches>)results.values); notifyDataSetChanged(); } }; @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemListaLanches = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_lanches, parent, false); final MyViewHolder holder = new MyViewHolder(itemListaLanches); return holder; } @Override public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) { itemAtual = listaLanches.get(position); holder.titulo.setText(itemAtual.getTitulo()); if (itemAtual.getId() == 0){ fit.setVisibility(View.GONE); lc.setVisibility(View.GONE); } if (itemAtual.getId() == 1){ lc.setVisibility(View.VISIBLE); fit.setVisibility(View.GONE); } if (itemAtual.getId() == 2){ fit.setVisibility(View.VISIBLE); lc.setVisibility(View.GONE); } } @Override public int getItemViewType(int position) { return position; } @Override public int getItemCount() { return listaLanches.size(); } } Obrigado pela atenção. Continue reading...