Проблемы с прокруткой RecyclerView - PullRequest
0 голосов
/ 13 июля 2020

Я веду чат, когда я вхожу в приложение, сообщения загружаются правильно, но когда я прокручиваю и возвращаюсь к тому же сообщению, сообщения типа аудио и изображения исчезают, только текст преобладает. Есть идеи, почему? Это код, который я не понимаю, почему прокрутка загруженных изображений исчезает, чтобы загрузить их в изображение из firebase, я использую Glide. Также при прокрутке загружается изображение профиля человека, который разместил сообщение выше, когда оно не от пользователя, я повторяю, что это только для прокрутки, они загружаются отлично.

enter image description here введите описание изображения здесь

Код адаптера

public class AdapterRVMensajes extends RecyclerView.Adapter<AdapterRVMensajes.MensajeHolder> {
    private List<MensajePojo> lstMensajes;
    private Context c;
    private MediaPlayer mediaPlayer;

    public AdapterRVMensajes(List<MensajePojo> lstMensajes,Context c) {
        this.lstMensajes = lstMensajes;
        this.c = c;
    }

    @NonNull
    @Override
    public MensajeHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View myView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_message,parent,false);
        return new MensajeHolder(myView);
    }

    @Override
    public void onBindViewHolder(@NonNull MensajeHolder holder, final int position) {

        if(!lstMensajes.get(position).getFoto_perfil().equals("nada")){
            Glide.with(c).load(lstMensajes.get(position).getFoto_perfil()).into(holder.imgPerfil);
        }


        if(lstMensajes.get(position).getTipo()==0){
            holder.txtvname.setText(lstMensajes.get(position).getNombre());
            holder.txtvmessage.setText(lstMensajes.get(position).getMensaje());
            holder.txtvdate.setText(""+lstMensajes.get(position).getFecha());
            holder.imgEnviado.setVisibility(View.INVISIBLE);
            holder.imgBtAudio.setVisibility(View.INVISIBLE);

        }

        if(lstMensajes.get(position).getTipo()==1){
            holder.txtvmessage.setVisibility(View.INVISIBLE);
            holder.txtvname.setText(lstMensajes.get(position).getNombre());
            holder.txtvdate.setText(""+lstMensajes.get(position).getFecha());
            holder.imgBtAudio.setVisibility(View.INVISIBLE);
            Glide.with(c).load(lstMensajes.get(position).getMensaje()).into(holder.imgEnviado);

        }

        if(lstMensajes.get(position).getTipo()==2){

            holder.txtvmessage.setVisibility(View.INVISIBLE);
            holder.imgEnviado.setVisibility(View.INVISIBLE);
            holder.txtvname.setText(lstMensajes.get(position).getNombre());
            holder.txtvdate.setText(""+lstMensajes.get(position).getFecha());
            holder.imgBtAudio.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    try {
                        mediaPlayer = null;
                        mediaPlayer = new MediaPlayer();
                        mediaPlayer.setDataSource(lstMensajes.get(position).getMensaje());
                        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            @Override
                            public void onPrepared(MediaPlayer mp) {
                                mp.start();
                            }
                        });

                        mediaPlayer.prepare();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

        }




    }



    @Override
    public int getItemCount() {
        return lstMensajes.size();
    }

    class MensajeHolder extends RecyclerView.ViewHolder{
        private TextView txtvname,txtvmessage,txtvdate;
        private ImageView imgEnviado, imgPerfil;
        private ImageButton imgBtAudio;
        public MensajeHolder(@NonNull View itemView) {
            super(itemView);
            imgPerfil = (ImageView) itemView.findViewById(R.id.imageViewMensajecard);
            txtvname = (TextView) itemView.findViewById(R.id.textViewName);
            txtvmessage = (TextView) itemView.findViewById(R.id.textViewMessage);
            txtvdate = (TextView) itemView.findViewById(R.id.textViewDate);
            imgEnviado = (ImageView) itemView.findViewById(R.id.fotoEnviada);
            imgBtAudio = (ImageButton) itemView.findViewById(R.id.imageButtonOirAudio);


        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...