BaseAdaPeter<笔记>

ItemBean.java

package com.imooc.baseadaptertest;

public class ItemBean {

    public int itemImageResid;
    public String itemTitle;
    public String itemContent;

    public ItemBean(int itemImageResid, String itemTitle, String itemContent) {
        this.itemImageResid = itemImageResid;
        this.itemTitle = itemTitle;
        this.itemContent = itemContent;
    }
}

MainActivity.java

package com.imooc.baseadaptertest;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView = (ListView) findViewById(R.id.lv_main);
        List<ItemBean> dataList = new ArrayList<>();
        // 创建假数据
        for (int i = 0; i < 20; i++) {
            dataList.add(new ItemBean(
                    R.mipmap.ic_launcher,
                    "我是标题" + i,
                    "我是内容" + i));
        }
        // 设置适配器
        listView.setAdapter(new MyAdapter(this, dataList));
    }
}

MyAdapter.java

package com.imooc.baseadaptertest;

    public class MyAdapter extends BaseAdapter {

        private LayoutInflater mLayoutInflater;
        // 映射数据
        private List<ItemBean> mDataList;
        private long mSumTime;

        public MyAdapter(Context context, List<ItemBean> list) {
            mLayoutInflater = LayoutInflater.from(context);
            mDataList = list;
        }

        // 获取数据量
        @Override
        public int getCount() {
            return mDataList.size();
        }

        // 获取对应ID项对应的Item
        @Override
        public Object getItem(int position) {
            return mDataList.get(position);
        }

        // 获取对应项ID
        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
-----------------------------------------------------------------
①  // 逗比式 24409529// 获取纳秒时间 更加精确long start = System.nanoTime();
①            // 由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null
①            View view = mLayoutInflater.inflate(R.layout.item, null);
①            // 实例化控件
①            ImageView itemImage = (ImageView) view.findViewById(R.id.iv_image);
①            TextView itemTitle = (TextView) view.findViewById(R.id.tv_title);
①            TextView itemContent = (TextView) view.findViewById(R.id.tv_content);
①            // 取出bean对象
①            ItemBean bean = mDataList.get(position);
①            // 设置控件的数据
①            itemImage.setImageResource(bean.itemImageResid);
①            itemTitle.setText(bean.itemTitle);
①            itemContent.setText(bean.itemContent);
①            long end = System.nanoTime();
①            long dValue = end - start;
①            mSumTime += dValue;
①            // 输出每次getView消耗的时间和
①            Log.d("xys", String.valueOf(mSumTime));
①            return view;
①  // 逗比式 
-----------------------------------------------------------------
②  // 普通式 19271161// 获取纳秒时间 更加精确long start = System.nanoTime();
②        if (convertView == null) {
②            //由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null
②            convertView = mLayoutInflater.inflate(R.layout.item, null);
②        }
②        ImageView itemImage = (ImageView) convertView.findViewById(R.id.iv_image);
②        TextView itemTitle = (TextView) convertView.findViewById(R.id.tv_title);
②        TextView itemContent = (TextView) convertView.findViewById(R.id.tv_content);
②        // 取出bean对象
②        ItemBean bean = mDataList.get(position);
          // 设置控件的数据
②        itemImage.setImageResource(bean.itemImageResid);
②        itemTitle.setText(bean.itemTitle);
②        itemContent.setText(bean.itemContent);
②        long end = System.nanoTime();
②        long dValue = end - start;
②        mSumTime += dValue;
②        // 输出每次getView消耗的时间和
②        Log.d("xys", String.valueOf(mSumTime));
②        return convertView;
②  // 普通式 
-----------------------------------------------------------------
③  // 文艺式 16325820// 获取纳秒时间 更加精确long start = System.nanoTime();
③        ViewHolder holder = null;
③        if (convertView == null) {
③            holder = new ViewHolder();
③             //由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null
③            convertView = mLayoutInflater.inflate(R.layout.item, null);
③            holder.img = (ImageView) convertView.findViewById(R.id.iv_image);
③            holder.title = (TextView) convertView.findViewById(R.id.tv_title);
③            holder.content = (TextView) convertView.findViewById(R.id.tv_content);
③            convertView.setTag(holder);
③        } else {
③            holder = (ViewHolder) convertView.getTag();
③        }
③             //取出bean对象
③        ItemBean bean = mDataList.get(position);
③             //设置控件的数据
③        holder.img.setImageResource(bean.itemImageResid);
③        holder.title.setText(bean.itemTitle);
③        holder.content.setText(bean.itemContent);
③        long end = System.nanoTime();
③        long dValue = end - start;
③        mSumTime += dValue;
③             //输出每次getView消耗的时间和
③        Log.d("xys", String.valueOf(mSumTime));
③        return convertView;
③  // 文艺式 
-----------------------------------------------------------------
        }

        // ViewHolder用于缓存控件
        class ViewHolder{
            public ImageView img;
            public TextView title;
            public TextView content;
        }
    }

ViewHolder优化BaseAdapter

1.创建bean对象,用于封装数据
2.在构造方法中初始化用于映射的数据源list
3.创建ViewHolder类,创建布局映射关系
4.判断convertView,为空则创建,并设置tag,
否则通过tag来取出 ViewHolder
5.给ViewHolder中的控件设置数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值