ListView的优化
来源:互联网 发布:java金融项目开发案例 编辑:程序博客网 时间:2024/06/03 16:46
很简单的总结下listView的优化方案,供新手参考,高手勿喷,有错误的地方希望大家指正,谢谢啦!闲话就说到这里啦,接下来进入主题
首先想到的就是重用view,这样可以减少内存的消耗,同时加快Item加载速度,我总结了三种优化方法:
1:重用convertView,减少内存消耗
@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHoler holer;if (convertView == null) {holer = new ViewHoler();//R.layout.list_item这个布局是需要适配的Item的数据convertView = inflater.inflate(R.layout.list_item, null);//ID,Name是R.layout.list_item布局中的控件holer.Name = (TextView) convertView.findViewById(R.id.Name);holer.ID = (TextView) convertView.findViewById(R.id.ID);convertView.setTag(holer);} else {holer = (ViewHoler) convertView.getTag();}//这里可以对上面的两个控件进行设置值holer.Name.setText("name");holer.ID.setText("ID");return convertView;}
2:设置内部类减少查找控件的ID,减少性能消耗
private static class ViewHoler {public TextView Name;public TextView ID;}3:使用了内部类classViewHolder、重用了convertView。
@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHoler holer;if (convertView == null) {holer = new ViewHoler();//R.layout.list_item这个布局是需要适配的Item的数据convertView = inflater.inflate(R.layout.list_item, null);//ID,Name是R.layout.list_item布局中的控件holer.Name = (TextView) convertView.findViewById(R.id.Name);holer.ID = (TextView) convertView.findViewById(R.id.ID);convertView.setTag(holer);} else {holer = (ViewHoler) convertView.getTag();}//这里可以对上面的两个控件进行设置值holer.Name.setText("name");holer.ID.setText("ID");return convertView;}private static class ViewHoler {public TextView Name;public TextView ID;}最后附上完整的代码,仅供参考,希望大家多多指教哦
import java.util.ArrayList;import java.util.List;import library.utils.IsNullUtils;import android.app.Activity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MyAdapter extends BaseAdapter {//这个是你需要适配的数据,list集合,Object是你需要适配的任何类型的数据,包括对象private List<Object> myList;private Activity activity;private LayoutInflater inflater;public MyAdapter(Activity activity) {this.activity = activity;myList = new ArrayList<Object>();inflater = LayoutInflater.from(activity);}/** * 添加需要适配器的数据 * @param allObject */public void add(List<Object> allObject) {if (!IsNullUtils.isNull(myList)) {myList = new ArrayList<Object>();}myList.addAll(allObject);notifyDataSetChanged();}@Overridepublic int getCount() {return myList.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHoler holer;if (convertView == null) {holer = new ViewHoler();//R.layout.list_item这个布局是需要适配的Item的数据convertView = inflater.inflate(R.layout.list_item, null);//ID,Name是R.layout.list_item布局中的控件holer.Name = (TextView) convertView.findViewById(R.id.Name);holer.ID = (TextView) convertView.findViewById(R.id.ID);convertView.setTag(holer);} else {holer = (ViewHoler) convertView.getTag();}//这里可以对上面的两个控件进行设置值holer.Name.setText("name");holer.ID.setText("ID");return convertView;}private static class ViewHoler {public TextView Name;public TextView ID;}}
0 0
- ListView的优化
- listView的优化
- ListView的优化
- Listview的优化
- listView的优化
- ListView的优化
- ListView的优化
- listview的优化
- ListView的优化(1)
- ListView的优化(2)
- ListView的优化(3)
- ListView的优化
- listView的优化
- Listview的优化
- 关于listview的优化
- ListView的优化
- ListView的优化
- ListView的优化
- 京东是大石、天猫淘宝是碎石与水、唯品会是气泡——论市场空间的无穷性
- 2015 ACM ICPC 长春赛区 网络赛 HDU 5437 Alisha’s Party
- C#委托、事件学习之(二)——简单按钮委托事件
- 【网络】(八)I/O复用--Select(二)
- UITextField使用总结
- ListView的优化
- RSA算法
- SIM5000简略笔记
- android AbsListView之ListView使用(1)
- HTTP返回状态码合集
- erl_栈,队列
- java给微信发送get和post请求
- Http Response Code
- es6 标准 Promise 学习笔记