几种adapter的加载优化方式
来源:互联网 发布:js怎样仿写shift 编辑:程序博客网 时间:2024/05/25 23:26
滴水穿石
在动手之前脑中从头到尾过几次,然后下手时自然顺畅,而且对进度的把握也能更加明了。
加载优化方式
今天在bugly突然看到有一个oom的crash,然后查看之后发现某个地方少了点优化,综合之前做的几种,就在这里统一整理一下。
1.继承BaseAdapter.
这里是需要重写几个方法:
@Overridepublic int getCount() { return list.size();}@Overridepublic Object getItem(int position) { return list.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {}本来按照之前的优化,只在getView里面判断null==convertview,如果为空则重新inflate,忘记tag重用了,现在优化后是这样的。
@Overridepublic View getView(final int position, View convertView, ViewGroup parent) { Holder holder ; if (null==convertView) { holder=new Holder(); convertView = ((Activity) _context).getLayoutInflater().inflate(R.layout.list, null); holder.textView=(TextView)convertView.findViewById(R.id.item_name); holder.imageView=(ImageView)convertView.findViewById(R.id.img); convertView.setTag(holder); }else{ holder=(Holder)convertView.getTag(); } RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(DeviceInfo.getScreenWidth(_context),DeviceInfo.getScreenWidth(_context));//删掉了某些宽高比例 holder.imageView.setLayoutParams(params); if(SystemConfig.getCityInHashmap(list.get(position).getName())==0){ ImageLoader.getInstance().displayImage("drawable://default.png"), holder.imageView, _options); }else{ ImageLoader.getInstance().displayImage("drawable://xx.png"), holder.imageView, _options); } holder.textView.setText(list.get(position).getName()); return convertView;}public class Holder{ TextView textView; ImageView imageView;}这样的话就不用大量的产生imageview了。
第二种:继承RecyclerView.Adapter<ViewPagerAdapter.ViewHolder>,这里Holder加入到了方法里面。
public class ViewHolder extends RecyclerView.ViewHolder{ TextView textView; public ViewHolder(View itemView) { super(itemView); textView=(TextView)itemView.findViewById(R.id.item_info); }}
这里这个ViewHolder需要继承系统RecyclerVIew.ViewHolder,但是大家看到上面没有,继承的adapter是适配的当前adapter的ViewHolder,其他的地方大同小异了。实现父类方法
@Overridepublic int getItemCount() { return list.size();}
只是这个时候我们只需在onCreateViewHolder里面进行控件的绑定。@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {}@Overridepublic void onBindViewHolder(ViewHolder holder, final int position) {}
@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mLayoutInflater.inflate(R.layout.item_home, parent, false); ViewHolder viewHolder = new ViewHolder(view); viewHolder.mLinearLayout=(LinearLayout)view.findViewById(R.id.item);}
然后在onBindViewHolder里面使用holder.xxx即可。
3.继承PagerAdapter,也是实现父类方法,然后具体操作基本看方法名也知道该怎么做了,只不过我这边将那个实体类放到了外面,方便其他的重用,这里就不贴出来了。
目前项目中就用到了这几种简单的,欢迎大家提出不适之处。有相互学习的朋友加QQ一起学习呗:125642014. ~_~
0 0
- 几种adapter的加载优化方式
- ListView中adapter加载数据的两种方式
- Android开发之Fragment几种加载方式的优化和对比
- Flex加载图片的几种方式
- comboBox 加载数据的几种方式
- Spring的几种加载方式
- java 加载文件的几种方式
- Jquery加载的几种方式
- spring加载配置文件的几种方式
- jquery预加载的几种方式
- JS页面加载的几种方式
- UIImage加载图片的几种方式
- ImageView加载图片的几种方式
- UIimage的几种加载方式
- Sciter:加载资源的几种方式
- js的几种加载方式
- Fresco加载图片的几种方式
- js延迟加载的几种方式
- Xamarin.iOS 自定义样式的弹出窗
- ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
- jquery-模拟打开select
- 使用Cygwin在Windows上体验Linux
- 破解苹果电脑开机密码
- 几种adapter的加载优化方式
- 使用Eclipse远程调试及原理
- 利用Java反射机制输出类的信息
- js设置canvas的宽高(动态设置canvas的宽高)
- js对象属性 通过点(.) 和 方括号([]) 的不同之处
- BootStrap学习
- Andrid数据库框架——greenDAO(三)
- 【Unity3D】Android和ios真机调试测Profiler
- avalon html元素绑定基础入门