Android 我的回收站是落后的
我使用RecyclerView-CardView和volley获取带有json的mysql项目,并在我的应用程序中显示,在每个CardView行中,我有一个垂直布局,在这个布局中,我有4个带文本的水平布局 但我的应用程序和滚动现在有一些滞后,这是为布局,他们是很多 但我需要他们,我该怎么办Android 我的回收站是落后的,android,android-recyclerview,Android,Android Recyclerview,我使用RecyclerView-CardView和volley获取带有json的mysql项目,并在我的应用程序中显示,在每个CardView行中,我有一个垂直布局,在这个布局中,我有4个带文本的水平布局 但我的应用程序和滚动现在有一些滞后,这是为布局,他们是很多 但我需要他们,我该怎么办 public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { //Imageloader to
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
//Imageloader to load image
private ImageLoader imageLoader;
private Context context;
//List to store all superheroes
List<Getter_Setter> superHeroes;
//Constructor of this class
public CardAdapter(List<Getter_Setter> superHeroes, Context context){
super();
//Getting all superheroes
this.superHeroes = superHeroes;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.ads_list, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
//Getting the particular item from the list
Getter_Setter superHero = superHeroes.get(position);
//Loading image from url
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(superHero.getImageUrl(), ImageLoader.getImageListener(holder.imageView, R.drawable.imageloader, android.R.drawable.ic_dialog_alert));
//Showing data on the views
holder.imageView.setImageUrl(superHero.getImageUrl(), imageLoader);
holder.textViewName.setText(superHero.getName());
holder.textView_MainBrand.setText(superHero.getBrand());
}
@Override
public int getItemCount() {
return superHeroes.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
//Views
public NetworkImageView imageView;
public TextView textViewName;
public TextView textView_MainBrand;
//Initializing Views
public ViewHolder(View itemView) {
super(itemView);
imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
textView_MainBrand = (TextView) itemView.findViewById(R.id.textView_MainBrand);
}
}
公共类CardAdapter扩展了RecyclerView.Adapter{
//Imageloader以加载图像
私有图像加载器;
私人语境;
//存储所有超级英雄的列表
列出超级英雄;
//这个类的构造函数
公共卡适配器(列出超级英雄、上下文){
超级();
//获得所有超级英雄
这个。超级英雄=超级英雄;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.ads_列表,父项,假);
视窗夹持器视窗夹持器=新视窗夹持器(v);
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
//从列表中获取特定项
Getter_Setter superHero=超级英雄.get(位置);
//从url加载图像
imageLoader=CustomVolleyRequest.getInstance(上下文).getImageLoader();
获取(superHero.getImageUrl(),imageLoader.getImageListener(holder.imageView,R.dravable.imageLoader,android.R.dravable.ic_对话框_警报));
//显示视图上的数据
holder.imageView.setImageUrl(superHero.getImageUrl(),imageLoader);
holder.textViewName.setText(superHero.getName());
holder.textView_MainBrand.setText(superHero.getBrand());
}
@凌驾
public int getItemCount(){
返回超级英雄。大小();
}
类ViewHolder扩展了RecyclerView.ViewHolder{
//观点
公共网络图像视图;
公共文本视图文本视图名称;
公共文本视图文本视图_主品牌;
//初始化视图
公共视图持有者(视图项视图){
超级(项目视图);
imageView=(NetworkImageView)itemView.findViewById(R.id.imageViewHero);
textViewName=(TextView)itemView.findViewById(R.id.textViewName);
textView\u MainBrand=(textView)itemView.findViewById(R.id.textView\u MainBrand);
}
}
}
尝试毕加索加载图像。但这不是为了我的图像,当我完全删除图像时,它仍然滞后。使用方法跟踪来确定你在哪里花费时间。你的应用程序图片显示,OnClickListeners、images、setText、findViews,可能还有更多。拉吉几乎总是意味着发生的事情太多了。每次滚动时,所有代码都必须运行。最小化代码,缓存图像,将尽可能多的代码放在回收器之外。