Android RecyclerView中映像后的缓慢应用程序
我的应用程序工作正常,但在我将调整大小的图像包含在RecyclerView中后速度变得非常慢,为什么会发生这种情况Android RecyclerView中映像后的缓慢应用程序,android,Android,我的应用程序工作正常,但在我将调整大小的图像包含在RecyclerView中后速度变得非常慢,为什么会发生这种情况 public class AlunoAdapter extends RecyclerView.Adapter<AlunoAdapter.AlunoViewHolder> { private List<Aluno> alunos; private Context context; private static ItemClickList
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);
}
}
public类AlunoAdapter扩展了RecyclerView.Adapter{
私人名单;
私人语境;
私有静态项clickListener clickListener;
私有静态LongItemClickListener LongItemClickListener;
公共AlunoAdapter(列出Alunos、上下文){
这个.alunos=alunos;
this.context=上下文;
}
@凌驾
public AlunoViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(上下文)。充气(R.layout.aluno_celula,父项,false);
返回新的AlunoViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(AlunoViewHolder holder,内部位置){
Aluno Aluno=alunos.get(位置);
holder.nome.setText(aluno.getNome());
if(aluno.getFoto()!=null){
Bitmap fotoAluno=BitmapFactory.decodeFile(aluno.getFoto())//
Bitmap fotoReduz=Bitmap.createScaledBitmap(fotoAluno,100100,true);
holder.foto.setImageBitmap(fotoReduz);//
}否则{
Drawable semFoto=context.getResources().getDrawable(R.Drawable.ic_no_image3);
支架。foto。可设置图像绘制(semFoto);
}
}
@凌驾
public int getItemCount(){
返回alunos.size();
}
public void setClickListener(项ClickListener项ClickListener){
clickListener=itemClickListener;
}
公共无效集LongItemClickListener ClickListener(LongItemClickListener LongItemClickListener ClickListener){
longItemClickListener=longItemClickListener ClickListener;
}
公共类AlunoViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener、View.OnLongClickListener{
最终文本视图nome;
最终图像视图foto//
公共AlunoViewHolder(视图){
超级(视图);
nome=(TextView)view.findViewById(R.id.nome);
foto=(ImageView)view.findviewbyd(R.id.fotinha)//
view.setOnClickListener(这个);
view.setOnLongClickListener(this);//nao tinha
}
@凌驾
公共void onClick(视图){
如果(clickListener!=null)
单击listener.onItemClick(视图,getAdapterPosition(),false);
}
@凌驾
仅长按公共布尔值(视图){
if(longItemClickListener!=null)
longItemClickListener.onItemClick(视图,getAdapterPosition());
返回false;
}
}
公共接口项ClickListener{
void onItemClick(视图、int位置、布尔b);
}
公共接口LongItemClickListener{
布尔值单击(视图,int位置);
}
}
我是Android编程的初学者,我一定是实现了一些错误。您可以使用Glid库在Android中平滑加载图像 请参考下面的链接以了解该库 您能测试一下这个吗
fotoReduz.getByteCount()
。