convertView 在API中的解释是The old view to reuse, if possible, 第一次getView时还没有convertView,这时你便创建了一个新的view,下次getView时就有这个“旧的”convertView了  setTag的作用才是把查找的view通过ViewHolder封装好缓存起来方便多次重用,当需要时可以getTag拿出来 当你的listview里布局多样化的时候 viewholder的作用就有比较明显的体现了. 当然了,单一模式…
使用ConvertView和ViewHolder的优化是针对ListView的Adapter(BaseAdapter)的.这种优化的优点如下: 1)重用了ConveertView,在很大程度上减少了内存的消耗.通过判断ConvertView是否为NULL,如果是NULL那么就需要生成一个新的View出来(通过LayoutInflater生成),绑定数据后显示给用户:如果ConvertView不是NULL,则我们需要做的就只有绑定数据并呈现给用户. 2)由于ListView中的Item往往都是只有…
ListView的性能优化之convertView和viewHolder 2014-05-14 参考:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html 最近碰到的面试题中经常会碰到问”ListView的优化”问题.所以就拿自己之前写的微博客户端的程序做下优化.自己查了些资料,看了别人写的博客,得出结论,ListView优化大致从以下几个角度:1.复用已经生成的convertView:2.添加viewHolder类:3…
1.概述 ListView是Android中非常常见的控件通过Adapter架起数据与界面显示的桥梁,MVC思想在其中得到了很好地体现: M:model 数据模型    添加到ListView中显示的数据 V:View   视图 在界面中显示的每一条样式(不只是通常的每一条,比如QQ聊天间隔显示的样式) C:Control  控制  通过Activity来协调全局 其中的关键所在就是Adapter(适配器),它就是一座桥梁,Adapter提供对数据的访问,也负责为每个数据产生每个对应的View,…
ListView优化大致从以下几个角度:1.复用已经生成的convertView:2.添加viewHolder类:3.缓存数据(图片缓存):4.分页加载. 具体方案: 1.如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用.在这个方法中尽可能少创建view. 2.给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的…
转载请注明出处 最近碰到的面试题中经常会碰到问"ListView的优化"问题.所以就拿自己之前写的微博客户端的程序做下优化. 自己查了些资料,看了别人写的博客,得出结论,ListView优化大致从以下几个角度: 1.复用已经生成的convertView: 2.添加viewHolder类: 3.缓存数据(图片缓存): 4.分页加载. 一.复用convertView 首先讲下ListView的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个…
http://blog.csdn.net/bill_ming/article/details/8817172…
ViewHoder优化:     @Override         public View getView(int position, View convertView, ViewGroup parent) {             ViewHolder viewHolder = null;             if (convertView == null) {                 convertView = View.inflate(getActivity(), R.la…
//CommonAdapter import android.content.Context; import android.widget.BaseAdapter; import java.util.List; /** * Created by Administrator on 2016/1/28. */ public abstract class CommonAdapter<T> extends BaseAdapter { private List<T> mDatas; priv…
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3642849.html 在Android项目中,经常都会用到ListView这个控件,而相应的Adapter中getView()方法的编写有一个标准的形式,如下: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder;…
利用ViewHolder优化自定义Adapter的典型写法 最近写Adapter写得多了,慢慢就熟悉了. 用ViewHolder,主要是进行一些性能优化,减少一些不必要的重复操作.(WXD同学教我的.) 具体不分析了,直接上一份代码吧: public class MarkerItemAdapter extends BaseAdapter { private Context mContext = null; private List<MarkerItem> mMarkerData = null;…
1 public class MarkerItemAdapter extends BaseAdapter { private Context mContext = null; private List<MarkerItem> mMarkerData = null; public MarkerItemAdapter(Context context, List<MarkerItem> markerItems) { mContext = context; mMarkerData = ma…
JVM和DVM JavaSE 程序使用的虚拟机叫 Java Virtual Machine,简称 JVM.Android 平台虽然是使用java语言来开发应用程序,但Android程序却不是运行在标准java虚拟机上的,谷歌专门为Android平台设计了一套虚拟机来运行Android程序,它就是Dalvik虚拟机.Dalvik虚拟机执行的是已转换为 .dex(即 Dalvik Executable)格式的 Java 应用程序,.dex 格式是专为 Dalvik 设计的一种压缩格式,适合内存和处理…
在adapter中通过使用静态内部类(viewholder)缓存组件的引用来防止ListView刷新时重新LayoutInflater跟findViewById从而达到优化的目的.示例如下: @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if(convertView == null) { convertVie…
近期在做项目时,又要写 ViewHolder. 突然想到网上看看有没什么好的写法! 不知道你是不是也烦透了写那些没有技术含量的ViewHolder 看看这些.也许会有收获! 然后就找到了以下两篇文章(感谢分享! ): ViewHolder超简洁写法 点击跳转 优雅的使用ViewHolder 点击跳转 然后自己整理的了, 保存起来.省的忘记.顺便分享一下! 直接贴代码了: 第一种: import android.util.SparseArray; import android.view.View;…
·作为Java中最为基础的部分,在Java的学习过程中,就一定会学习到字符串,其中String类作为字符串.并且在Java所有的程序中是使用字符串都是使用String类去实现. 两者存在一定的通性,都是可以储存和操作字符串,即包含多个字符的字符串数据. 但是StringBuffer与Sting的区别在哪里? 下面将讲述Sting与StringBuffer最为关键的区别之处在哪里? 1.从字符串的内容是否可以被修改上 String:字符串作为常量:则有一个这样的通性,它们的值在创建之后不能更改.在…
前言 在开发APP的过程中,攻城狮少不了要跟ListView.GridView这些组件眉来眼去,暗送几波秋波.自然原生态美人BaseAdapter更是程序员的最爱,有了它,我们想怎么干就能怎么干,嘿嘿,你懂的O(∩_∩)O哈哈~ 但是,每次写一个BaseAdapter,我们都很自觉的给他写一个ViewHolder,一两个还好,万一应用程序中有数不清的ListView,呵呵~你妹!千篇一律,看得都审美疲劳.作为最伟大的第二十二世纪的程序员们,脱掉.搞上永远是我们最真挚的追求,所以我们要怎么将Vie…
常见的写法是这样的: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if( convertView == null ) { convertView = getLayoutInflater().inflate( R.layout.line, null ); ImageView imageView = (ImageView) conver…
在ListVIew做复用优化的时候,经常会写ViewHolder,还需要很麻烦的去findview,我最讨厌写一堆的这样代码了,今天看到了一个极简的写法,很好用,很简洁啊!!! public static <T extends View> T getAdapterView(View convertView, int id) {        SparseArray<View> viewHolder = (SparseArray<View>) convertView.ge…
我们寻常使用Adapter的方式 public class BusbaseSearchApadter extends SimpleBaseApadter { private List<Busbase> busbases = new ArrayList<Busbase>(); public Context context; public void setList(List<Busbase> busbases) { this.busbases = busbases; } p…
在Android开发中难免会遇到大量的数据加载到ListView中进行显示, 然后其中最重要的数据传递桥梁Adapter适配器是常用的,随着市场的需 求变化ListView'条目中的内容是越来越多这就需要程序员来自定义适配器, 而关键的就是适配器的优化问题,适配器没有优化好往往就会造成OOM (内存溢出)或者是滑动卡顿之类的问题,接下来我就给大家介绍一种常 用的Adapter优化方法 /** * list View的适配器 */ class Adapter extends BaseAdapter…
目录: 1.自定义控件概述 01_什么是自定义控件 Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果. 02_为什么用自定义控件 系统控件无法满足需求时,需要自定义控件. 系统的控件在不同手机长得不一样,我们希望在不同手机实现相同的效果: 有些手机上的控件长得不好看,希望好看一些. 系统控件的功能有限,需要在基础上增加功能. 03_怎么用自定义控件-三种方式 1.使用系统控件,重新组合,实现自定义…
ListView是我们开发中最常用的组件之一,在以往的PC端组件开发中,列表控件也是相当重要的,但是从桌面端到移动端,情况又有新的变化. 移动端的屏幕并不像桌面端那么大,并且移动端不可能把所有的内容都一下子展现出来,因为Android系统分配给一个应用的内存是有限的,而任何显示在组件上面的内容都是加载在内存中的,如果一个Item包含类似图片这样的占内存的内容,很容易就内存爆炸,也就是OOM,而且Android的界面渲染是在主线程中,如果耗时太长,用户在屏幕上有其他事件输入,如点击触摸,超过5秒没…
介绍 最近用淘宝客户端的时候,编辑地址的时候有个地区选择的功能.看上面的效果觉得挺酷,滚动的时候,是最后一个从下面飞上来挨着前一个.就自己鼓捣一个出来玩玩. 说了效果可能不太直观,下面上两张图看看效果 淘宝地区选择效果 再来一张自己的效果 gif的效果可能不太好,大家自己用Android手机打开淘宝看看 实现分析 展示很简单,ListView就可以了.对于动画效果,只需要在getView的时候获取到要展示的View,通过属性动画修改translationY就ok啦.由于地区选择是一个界面,所以这…
将原有项目图片加载框架picasso改为glide,关于picasso和glide文档就自行查阅相关资料 显示 图片 例子 Glide.with(mContext).load(imageUrl).placeholder(defaultDrawable) .error(defaultDrawable).dontAnimate().into(view) 显示正常 因为项目中头像是圆形利用glide实用圆头像代码如下 Glide.with(mContext) .load(imageUrl) .dont…
1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的? ①Item布局,层级越少越好,使用hierarchyview工具查看优化. ②复用convertView ③使用ViewHolder ④item中有图片时,异步加载 ⑤快速滑动时,不加载图片 ⑥item中有图片时,应对图片进行适当压缩 ⑦实现数据的分页加载 2.对于Android 的安全问题,你知道多少 ①错误导出组件 ② 参数校验不严 ③WebView引入各种安全问题,webview中的js注入 ④不混淆.不防二次打包 …
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/finddreams/article/details/44513579 一般的面试流程是笔试完就接着是面试了,面试时技术经理会问你一些你工作中遇到的Android方面的问题,谈谈你所做的项目,和在项目中所扮演的角色.今天我就给大家整理一些,面试中常见的面试官提的一些问题? 1.要做一个尽可能流畅的Li…
异步加载图片基本思想: 1.      先从内存缓存中获取图片显示(内存缓冲) 2.      获取不到的话从SD卡里获取(SD卡缓冲) 3.      都获取不到的话从网络下载图片并保存到SD卡同时加入内存并显示(视情况看是否要显示) public class LoaderAdapter extends BaseAdapter{ private static final String TAG = "LoaderAdapter"; private boolean mBusy = fal…
package com.itheima.mobileguard.activities; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.ActivityManager; import android.content.Intent; import android.content.SharedPreferences; import android.gr…
转载:http://www.lai18.com/content/1631130.html 目标:自定义ListView项布局通常需要自己实现Adapter,并通过搜索关键字筛选部分数据.且关键字变长变短,甚至为空时都应该正确搜索. 关键字:ListView Adapter ViewHolder Filter 最终实现如下效果: 借鉴了几篇资料后终于弄好了一个带过滤器的数据adapter.网上要一次性弄全资料还挺困难的,主要借鉴:http://www.cnblogs.com/mengdd/p/32…