-
普通式与逗比式的不同在于convertView的使用上: 普通式对convertView进行了处理,充分利用了ListView的缓存机制,避免了重复创建View对象,因为通过LayoutInflater对象的inflate()方法创建View对象是非常耗时且耗资源的。 通过简单的判断: if (convertView == null){ convertView = myInflater.inflate(R.layout.item, null); } ,就可以避免大量创建View对象,从而对 getView()做了较好的优化。 ----------------------------------- 摘自评论区: 如果将findViewById写在if(convertView==null)中的话,运行后listview的顺序是混乱的。查看全部
-
逗比式,浪费资源,请勿模仿!查看全部
-
为何是“逗比式”?因为这里只使用了getView()的position参数,完全没有利用另外两个参数。本质上说,是“没有利用到ListView的缓存机制”。每次使用getView(),都通过 LayoutInflater 创建新的View对象view,并在view中找到相应的控件、去给它设置相应的值,完全没有利用到 ListView 的缓存机制,这样是对资源的极大浪费。查看全部
-
创建一个新的类 MyAdapter 继承 BaseAdapter 作为自定义适配器。 声明数据源 List<ItemBesn> mylist; 构造有参的构造方法,让数据源和适配器产生关联: public MyAdapter(List<ItemBean> mylist) { this.mylist = mylist; } 改写四个继承的方法。查看全部
-
AS快捷键:Alt+insert 在遵循JavaBean设计原则的前提下创建 ItemBean 类: public class ItemBean { //私有属性 private int ItemImageid; private String ItemTitle; private String ItemContent; //无参构造方法 public ItemBean() { } //非原则,为了方便后面创建对象,这里又定义了有参的构造方法。 public ItemBean(int itemImageid, String itemTitle, String itemContent) { ItemImageid = itemImageid; ItemTitle = itemTitle; ItemContent = itemContent; } //公有的getter/setter方法 public void setItemImageid(int itemImageid) { ItemImageid = itemImageid; } public void setItemTitle(String itemTitle) { ItemTitle = itemTitle; } public void setItemContent(String itemContent) { ItemContent = itemContent; } public int getItemImageid() { return ItemImageid; } public String getItemTitle() { return ItemTitle; } public String getItemContent() { return ItemContent; } }查看全部
-
图中直接使用有参的构造方法实现赋值。还有另一种赋值方式,通过 Bean 对象的setter方法: for(int i=0;i<20;i++){ ItemBean ib = new ItemBean(); ib.setItemImageid(R.mipmap.ic_launcher); ib.setItemTitle("我是标题"+i); ib.setItemContent("我是内容"+i); datalist.add(ib); }查看全部
-
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的显示内容 ------------------------------------------ 如图,新建 Item.xml,创建一个简单的 Item 布局。查看全部
-
ListView的显示与缓存机制 了解缓冲池的存在 如图,实际有很多数据,但局限于手机屏幕的尺寸,ListView第一次加载的时候只显示前面几条数据,当我们向上滑动的时候,Item1 就被回收到缓冲池, 同时Item8从缓冲池中被取出。 从缓冲池中取出对象的方法:View getView(int position, View convertView, ViewGroup parent)。 通过缓存机制,可以极大地节约系统资源。 ------------------------------- 摘自评论区: 老师画的图是错误的,从此图中至少应该一次加载8个item(但第八个还没有显示),然后开始才是从Recycler中去取出被画成的item。因为 item1还没完全滑出屏幕时,此时item8已经显示在界面上了,所以一次至少的加载8个item查看全部
-
数据适配器——BaseAdapter 数据源的来源是各种各样的,而ListView所展现的数据格式是有一定要求的,数据适配器将数据源转换成ListView可以显示的数据格式,建立了数据源和ListView的适配关系。从而将数据的来源和数据的显示进行了“解耦”,降低了程序的耦合性,让程序更加容易扩展。 适配器有很多种,而BaseAdapter是最通用的适配器。查看全部
-
创建内部类ViewHolder用于优化findView查看全部
-
取出三个数据查看全部
-
初始化对象查看全部
-
返回ListView要显示的数据数量查看全部
-
数据源与数据适配器关联查看全部
-
Alt+insert调出Constructor查看全部
举报
0/150
提交
取消