1、根据android官方文档的说明:在Adapter中使用ViewHolder(在android5.0materials design中的组件RecyclerView已经体现),在getView方法中复用convertView,设置tag。
自己的部分代码片段:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder = null;
if (convertView == null) {
view = LayoutInflater.from(context).inflate(R.layout.layout_item_xiaohua, null);
holder = new ViewHolder();
holder.tv_xiaohua_title = (TextView) view.findViewById(R.id.tv_xiaohua_title);
holder.tv_xiaohua_content = (TextView) view.findViewById(R.id.tv_xiaohua_content);
holder.tv_xiaohua_time = (TextView) view.findViewById(R.id.tv_xiaohua_time);
view.setTag(holder);
} else {
view = convertView;
holder = (ViewHolder) view.getTag();
}
XiaoHuaBean.XiaoHuaList xiaoHuaList = list.get(position);
String hadRead = SharePrefUtil.getString(context, "hadread", "");
if (hadRead.contains(xiaoHuaList.title)){
holder.tv_xiaohua_title.setTextColor(context.getResources().getColor(R.color.colorGray));
holder.tv_xiaohua_content.setTextColor(context.getResources().getColor(R.color.colorGray));
holder.tv_xiaohua_time.setTextColor(context.getResources().getColor(R.color.colorGray));
}
holder.tv_xiaohua_title.setText(xiaoHuaList.title);
holder.tv_xiaohua_content.setText(xiaoHuaList.text);
holder.tv_xiaohua_time.setText(xiaoHuaList.ct);
return view;
}
private class ViewHolder{
private TextView tv_xiaohua_title;
private TextView tv_xiaohua_content;
private TextView tv_xiaohua_time;
}
2、item中含有图片的时候,设置滑动的时候不加载图片,对图片的处理很重要,如果对图片的质量要求不是很高的情况,尽量压缩一下,大图处理是防止内存溢出的关键。
3、把scrollingCache和animationCache设置为false。
4、数据量庞大的时候,尽量使用分页加载处理。
5、尽量使用ApplicationContext,避免在getView方法中使用复杂的业务逻辑和线程,避免在Adapter中使用static定义全局变量。