为了账号安全,请及时绑定邮箱和手机立即绑定

Android必学-BaseAdapter的使用与优化

难度初级
时长45分
学习人数
综合评分9.63
243人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.3 逻辑清晰
  • 源码怎么下载?求哥哥指教指教妹子
    查看全部
  • 适配器是继承自BaseAdapter 1. 逗比式适配器 在逗比式getView()方法中,每次都会重新创建一个新的View。然后从这个View实例中找到对应的组件进行填充数据。 2. 普通式适配器 在普通式getView()方法中,先去判断当前的View是否已经缓存过,没有缓存过才去创建。 if(convertView == null) { convertView = mInflater.inflate(R.layout.item, null); } 普通式和逗比式的区别在于判断当前View实例是否被缓存过,这样就利用了ListView的缓存机制,避免了重新创建了当前View对象。因为通过inflate()转换xml到一个view的过程需要一定的时间。 3. 文艺式适配器 文艺式getView()方法是利用了ViewHolder类,优化了inflate()和findViewById()的耗时操作。 (1)创建一个ViewHolder对象,通过ViewHolder对象,就将这些通过findViewById()找到的组件对象保存到了ViewHolder对应的组件对象中 (2)通过setTag()方法将这个viewHolder和当前的view建立联系 //这样就可以将没有缓存过的View对象创建出来,并将其每个组件保存在ViewHolder对象中。 (3)当View不为空的时候就可以通过convertView.getTag()将它所关联的viewHoloder对象取出。 (4)最后通过viewHolder中保存的组件对象设置当前的view对象 //通过ViewHolder类其实是优化了findViewById()的耗时操作
    查看全部
    4 采集 收起 来源:文艺式

    2015-08-08

  • 1.创建一个MyAdapter.java类,继承BaseAdapter,成员变量mList,在MyAdapter的构造方法中保存传进来的List<ItemBean>类型的数据源。 2.getCount()方法返回ListView需要显示的数据数量 mList.size()获取数据源的数据数量 getItem()方法取指定索引的数据项,mList.get(position)获取position getItemId()方法获取索引项,直接返回position getView()方法返回数据项显示的内容:/*逗比式,不考虑优化,每次创建新的view,效率低下*/ *通过LayoutInflater方法将一个xml文件转换为view对象(之后才能进行控件的初始化findviewbyid操作) ----成员变量LayoutInflater mInflater;//布局装载器对象 ----mInflater=LayoutInflater.from(context);//context是要使用当前的Adapter的界面对象 *View view=mIflater.inflate(R.layout.item,null) *对封装的控件分别进行初始化操作 3.MainActivity中初始化ListView控件,并配置适配器listView.setAdapter(new MyAdapter(this,itemBeanList));
    查看全部
  • 1、BaseAdapter的三重境界之普通式的特点: (1)利用了ListView的缓存特性,若没有缓存才创建新的View, (2)但是findViewById依然会浪费大量时间; 2、普通式与逗比式的差别 相比于逗比式只是将每次循环中自己创建的view换成getView方法中参数的convertView,调用getView方法先判断view是否为空,不为空则表示已经加载过了存在于缓冲池中,不需要重新创建新的View类对象来转换布局文件;
    查看全部
  • BaseAdapter基本结构 public int getCount();//适配器中数据集中数据的个数 public Object getItem(int position);//获取数据集中与指定索引对应的数据项 public long getItemId(int position);//获取指定行对应的ID public View getView(int position,View convertView,ViewGroup parent);//获取每一个Item显示内容
    查看全部
  • BaseAdapter的基本结构:
    查看全部
  • <转> 老师画的图是错误的,从此图中至少应该一次加载8个item,然后开始才是从Recycler中去取出被画成的item。因为但item1还没完全滑出屏幕时,此时item8已经显示在界面上了,所以一次至少的加载8个item
    查看全部
  • 对于一些细微的程序比较效率用获取系统纳秒时间方法 关键代码: long start =System.nanoTime(); ... long end =System.nanoTime(); long dValue=end-start; viewholder 作为findviewbyid的一个转接,避免系统大量的遍历提高效率。
    查看全部
    3 采集 收起 来源:深入讲解

    2016-07-12

  • 使用ViewHolder优化BaseAdapter的思路(如图) 需要注意几点: 1. Bean对象中封装ListView的每一行数据 2. MainActivity中创建并填充List<ItemBean> itemList; for (int i=0; i<20; i++) { itemList.add(new ItemBean(R.drawable.ic_launcher, "Title"+i, "I am an Android app debugger"+i)); } 3. 自定义适配器的构造方法中传入List<ItemBean> itemList数据 public MyAdapter(Context context, List<ItemBean> itemList) { super(); this.itemList = itemList; mInflater = LayoutInflater.from(context); } 4. getView()方法中将当前的ItemBean数据对象填充到当前convertView中 ItemBean itemBean = itemList.get(position); //得到当前行的ItemBean对象,里面包含了数据 viewHolder.imageView.setImageResource(itemBean.imageResId); viewHolder.title.setText(itemBean.title); viewHolder.content.setText(itemBean.content); return convertView;
    查看全部
    2 采集 收起 来源:总结

    2018-03-22

  • acitivity中
    查看全部
  • 1.BaseAdapter所需要素:LayoutInflater,Context,DataSource;
    查看全部
  • 1.创建ViewHolder类,含有所需的各种控件,为了避免重复的findViewById() class ViewHolder{ public ImageView tv_image; public TextView tv_title; public TextView tv_content; } 2.判断convertView是否为空 空:用setTag()方法将ViewHolder与其绑定 非空:用getTag()方法,取出相关的ViewHolder 重点: (1)convertView为空的时候,通过setTag()将ViewHolder与convertView绑定,每一个空的convertView都将会把Item的三个控件保存到ViewHolder里面。之后通过getTag()方法可以快速找到一个convertView所对应的ViewHolder对象,然后通过ViewHolder的成员变量找到了对应的三个控件,从而避免了用findViewById()去实例化对象。 (2)convertView不为空的时候,使用getTag()方法,取出它所关联的ViewHolder对象,同时也找到l对应控件。 3.之后再创建 ItemBean 对象,为viewHolder的三个控件赋值: ItemBean bean = mylist.get(position); viewHolder.imageView.setImageResource(bean.getItemImageid()); viewHolder.title.setText(bean.getItemTitle()); viewHolder.content.setText(bean.getItemContent()); 4.return convertView
    查看全部
    2 采集 收起 来源:文艺式

    2017-05-23

  • ViewHolder 1. 创建内部类ViewHolder。 2. 判断convertView是否为空。 3. 重点: (1)convertView为空的时候,通过setTag()将ViewHolder与convertView绑定,每一个空的convertView都将会把Item的三个控件保存到ViewHolder里面。之后通过getTag()方法可以快速找到一个convertView所对应的ViewHolder对象,然后通过ViewHolder的成员变量找到了对应的三个控件,从而避免了用findViewById()去实例化对象。 (2)convertView不为空的时候,使用getTag()方法,取出它所关联的ViewHolder对象,同时也找到l对应控件。 ------------------------- 之后再创建 ItemBean 对象,为viewHolder的三个控件赋值: ItemBean bean = mylist.get(position); viewHolder.imageView.setImageResource(bean.getItemImageid()); viewHolder.title.setText(bean.getItemTitle()); viewHolder.content.setText(bean.getItemContent()); 最后,return convertView;
    查看全部
    2 采集 收起 来源:文艺式

    2017-03-18

  • 为何是“逗比式”?因为这里只使用了getView()的position参数,完全没有利用另外两个参数。本质上说,是“没有利用到ListView的缓存机制”。每次使用getView(),都通过 LayoutInflater 创建新的View对象view,并在view中找到相应的控件、去给它设置相应的值,完全没有利用到 ListView 的缓存机制,这样是对资源的极大浪费。
    查看全部
  • ViewHolder优化BaseAdapter思路
    查看全部
    2 采集 收起 来源:总结

    2016-11-20

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
本课程是Android初-中级课程 1、熟练掌握基本的Android应用程序开发方法 2、熟练掌握Android中常见的适配器的使用 3、熟练掌握BaseAdapter中各方法的意义
老师告诉你能学到什么?
1、了解ListView的缓存机制 2、 BaseAdapter的逗比式 3、 BaseAdapter的普通式 4、 BaseAdapter的文艺式

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!