1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[android] Intent perdendo dados em uma Recycler View

Discussão em 'Mobile' iniciado por Stack, Setembro 21, 2021.

  1. Stack

    Stack Membro Participativo

    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.

    [​IMG]

    [​IMG]

    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...

Compartilhe esta Página