在RecyclerView中图像后应用缓慢

时间:2016-11-15 09:33:12

标签: android

我的应用程序正常工作,但在我在RecyclerView中包含已调整大小的图像之后变得非常慢,为什么会发生这种情况?

public class AlunoAdapter extends RecyclerView.Adapter<AlunoAdapter.AlunoViewHolder> {
    private List<Aluno> alunos;
    private Context context;
    private static ItemClickListener clickListener;
    private static LongItemClickListener longItemClickListener;

    public AlunoAdapter(List<Aluno> Alunos, Context context) {
        this.alunos = Alunos;
        this.context = context;
    }

    @Override
    public AlunoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.aluno_celula, parent, false);
        return new AlunoViewHolder(view);
    }

    @Override
    public void onBindViewHolder(AlunoViewHolder holder, int position) {
        Aluno aluno = alunos.get(position);
        holder.nome.setText(aluno.getNome());

        if (aluno.getFoto() != null) {
            Bitmap fotoAluno = BitmapFactory.decodeFile(aluno.getFoto());//
            Bitmap fotoReduz = Bitmap.createScaledBitmap(fotoAluno, 100, 100, true);

            holder.foto.setImageBitmap(fotoReduz);//    
        } else {
            Drawable semFoto = context.getResources().getDrawable(R.drawable.ic_no_image3);
            holder.foto.setImageDrawable(semFoto);
        }    
    }

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

    public void setClickListener(ItemClickListener itemClickListener) {
        clickListener = itemClickListener;
    }    

    public void setLongItemClickListenerClickListener(LongItemClickListener longItemClickListenerClickListener) {
        longItemClickListener = longItemClickListenerClickListener;
    }


    public class AlunoViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
        final TextView nome;
        final ImageView foto;//

        public AlunoViewHolder(View view) {
            super(view);
            nome = (TextView) view.findViewById(R.id.nome);
            foto = (ImageView) view.findViewById(R.id.fotinha);//

            view.setOnClickListener(this);
            view.setOnLongClickListener(this);//nao tinha
        }

        @Override
        public void onClick(View view) {
            if (clickListener != null)
                clickListener.onItemClick(view, getAdapterPosition(), false);
        }

        @Override
        public boolean onLongClick(View view) {
            if (longItemClickListener != null)
                longItemClickListener.onItemClick(view, getAdapterPosition());
            return false;
        }
    }   

    public interface ItemClickListener {
        void onItemClick(View view, int position, boolean b);    
    }

    public interface LongItemClickListener {   
        boolean onItemClick(View view, int position);
    }  
}

我是Android编程的初学者,我必须实现错误。

1 个答案:

答案 0 :(得分:0)

您可以使用Glid库在android中平滑加载图片。

请参阅下面的图书馆链接

https://github.com/bumptech/glide