展开

关键词

Android listView异步下载和convertView复用产生的错位问题

获取滑入屏幕的行item之前会先判断缓存中是否有可用的item,如果有,做为convertView参数传递给adapter的getView。 @Override public View getView ( int position , View convertView , ViewGroup parent ) { ViewHolder holder ; if ( convertView == null ) { convertView = inflater . inflate ( R . layout . list_item , null ) ; holder = new ViewHolder ( ) ; …… convertView . setTag ( holder ) ; } else { holder = ( ViewHolder ) convertView . getTag ( ) ; } }  这样提升了性能,但同时也会造成另外一些问题: a.

67470

Android开发-Listview中显示不同的视图布局

使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。 convertView在Item为单一的同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView的回收和重用会出现问题。 该方法返回多少个不同的布局   2)重写 getItemViewType(int) – 根据position返回相应的Item   3)根据view item的类型,在getView中创建正确的convertView = null;       viewHolder3 holder3 = null;       int type = getItemViewType(position);       //无convertView ,需要new出各个控件       if(convertView == null)       {         Log.e("convertView = ", " NULL");

55130
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android 之listview 优化方法

    2、分页加载,这也是优化之一,优化内存,还有体验感,有兴趣的可以试试大数据加载; 3、convertView 就是布局的复用; 4、ViewHolder的使用 目的减少findviewByID的次数; public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { == ", "getView-----position" + position); } else { } return convertView; } ? ) { if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list viewHolder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list

    13830

    android入门 — ListView的优化

    方法一:convertView参数 这个参数用于将之前加载好的布局进行缓存,以便之后进行重用。 convertView == null) { convertView = inflater.inflate(R.layout.item, null); ViewHolder holder; if(convertView == null) { convertView = inflater.inflate 当convertView不为空的时候:调用View的getTag()方法,将ViewHolder重新取出来。 ?    .当ConvertView被重新利用的时候,ViewHolder也随之取出,从而可以直接给各个控件赋值,而无需再次调用findViewById方法。

    518130

    优化使用BaseAdapter

    ---- 1.复用ConvertView: 上面也说了,界面上有多少个Item,那么getView方法就会被调用多少次! 我们来看看上一节我们写的getView()部分的代码: @Override public View getView(int position, View convertView, ViewGroup public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ holder = null; if(convertView == null){ convertView = LayoutInflater.from(mContext).inflate 对象,那么一定就会有初始化img_icon 、txt_aName 、txt_aSpeak 这三个对象,所以我们只需要判断 convertView 对象是否为空即可。

    27110

    2-VI--ListView的基本使用及优化

    [2] 本篇数据来源随机数据,方法可以看这篇:1-VI--随机数据生成 [3] 本篇介绍ListView数据填充及优化,普通使用-->convertView优化-->ViewHolder优化 效果 1.关于convertView源码注释: The old view to reuse, if possible. 为空时创建view,否则使用convertView View view = convertView == null ? LayoutInflater.from(MainActivity.this).inflate(R.layout.item_array_with_img, null) : convertView ,否则使用convertView if (convertView == null) { view = LayoutInflater.from(Up2Activity.this).

    21910

    ExpandableListView简单应用及listview模拟ExpandableListView

    , ViewGroup parent) {               GroupHolder groupHolder = null;   if (convertView == null) {   , null);                   groupHolder.textView = (TextView) convertView                            , ViewGroup parent) {   if (convertView == null) {                   convertView = inflater.inflate , ViewGroup parent) {               GroupHolder groupHolder = null;   if (convertView == null) {   , null);                   groupHolder.textView = (TextView) convertView

    67070

    笔记42 | Android加载器Adapter的深入学习篇(一)

    Adapter中常见的getView方法的调用: public View getView(int position, View convertView, ViewGroupparent){ if (convertView ==null) { convertView =LayoutInflater.from(mContext).inflate(R.layout.item_view converView; } ---- ViewHolder的作用 Recycler模式是为了解决重复inflate时候造成的View资源浪费,ViewHolder则是进一步进行性能优化,我们拿到convertView , ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView == null) { convertView = View.inflate(getActivity(), R.layout.list_item3, null);

    27540

    Android:控件Spinner实现下拉列表

    , ViewGroup parent) { if (convertView == null) { android.R.layout.simple_spinner_item, parent, false); } TextView tv = (TextView) convertView ; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(context); convertView = inflater.inflate( android.R.layout.simple_spinner_item, parent, false

    16630

    详解xamarin Android 实现ListView万能适配器

    ListView性能 public class ViewHolder:Java.Lang.Object { private SparseArray<View Views; View ConvertView ,null); ConvertView.Tag = this; } public static ViewHolder Get(Context context , View convertView ,ViewGroup parent ,int itemLayoutId,int position) { if (convertView == null) { , ViewGroup parent) { return ViewHolder.Get(mContext, convertView, parent, mItemLayoutId, position = null) return this.OnGetView(position,convertView,parent,item,viewHolder); return convertView

    31731

    android listview数据加载

    position) { return position; } @Override public View getView(int position, View convertView ZJLoction location = searchListData.get(position); AddressItem addressItem = null; if(convertView == null){ convertView = mInflater.inflate(R.layout.address_item,null); addressItem = new AddressItem(convertView); convertView.setTag(addressItem); }else{ (location.getName()); addressItem.detailView.setText(location.getAddress()); return convertView

    31420

    Android 自定义 MarqueeView 实现跑马灯 —— 原理篇

    ; } public View createItemView(int position, View convertView, ViewGroup parent) { ItemViewDelegate viewHolder = new ViewHolder(mContext, convertView, parent, position); viewHolder.mLayoutId = ,并调用 onViewHolderCreated() 方法 第二个方法:createItemView 会根据传递进来的 position 创建相应的 convertViewconvertView 而这个 convertView 什么时候为 null,什么时候不为 null,这个必须要外部调用来管理,MultiItemTypeAdapter 管理不了,也不应该管理。 取出 convertView 的。

    63110

    Android中ExpandableListView使用示例详解

    return true; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView , ViewGroup parent) { GroupViewHolder holder=null; if(convertView==null){ convertView = GroupViewHolder)convertView.getTag(); } holder.text.setText(parentList[groupPosition]); return convertView Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView , ViewGroup parent) { ChildViewHolder holder=null; if(convertView==null){ convertView

    31241

    Android GridView实现横向列表水平滚动

    , ViewGroup parent) { convertView = loadHomeHyOrYs(position, convertView, parent); return convertView ; } /** * 加载会员或医生的功能列表 */ public View loadHomeHyOrYs(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate( R.layout.home_gridview_item, parent, false); } TextView tv = get(convertView, R.id.id_tv_item); ImageView iv = get(convertView, R.id.id_iv_item); iv.setBackgroundResource(Imgs[position]); tv.setText

    41220

    Android 中ListView和GridView赋值错位

    2.解决 无法阻止多次调用getView,只能在onMeasure调用getView的时候不要去对convertView做赋值的操作,只有当onLayout的时候再对ConvertView进行操作。 int t, int r, int b) { isOnMeasure = false; super.onLayout(changed, l, t, r, b); } } 2).getView中对ConvertView 的处理 @Override public View getView(int position, View convertView, ViewGroup parent) { System.out.println ("xcqw getView 1***position"+position); ViewHolder holder = null; if (convertView == null) { convertView contentList.get(position); holder.tvContent.setText(content); //如果不是onMeasure调用的就可以正常操作了 //赋值操作 return convertView

    20041

    Android ExpandableListView单选以及多选实现代码

    , ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder (); convertView = View.inflate(context, R.layout.listview_item, null); holder.childText = (TextView ) convertView .findViewById(R.id.id_text); holder.childBox = (CheckBox) convertView .findViewById( , ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder (); convertView = View.inflate(context, R.layout.group_item, null); holder.groupText = (TextView) convertView

    32120

    Android ExpandableListView双层嵌套实现三级树形菜单

    , ViewGroup parent) { GroupHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from , ViewGroup parent) { ChildHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from , ViewGroup parent) { GroupHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from , ViewGroup parent) { Holder holder = null; if (convertView == null) { convertView = LayoutInflater.from (mContext).inflate( R.layout.child_child_item, null); holder = new Holder(convertView); convertView.setTag

    37020

    android调用webservice接口获取信息

    , ViewGroup parent) { ViewHolder holder = null; // convertView为null的时候初始化convertView。 if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.list_item = (TextView) convertView .findViewById(R.id.list_item_goodsSellPrice); holder.goodsUnit = (TextView) convertView .findViewById(R.id.list_item_goodsUnit); holder.goodsSellNum = (EditText) convertView .findViewById = -1 && index == position) { holder.goodsSellNum.requestFocus(); } return convertView; } public final

    30420

    Android开发实现ListView部分布局监听的方法

    getItemId(int position) { return position; } @Override public View getView(int position, View convertView , ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = , null); initViewHolder(convertView, viewHolder, position); } else { viewHolder = (ViewHolder ) convertView.getTag(); } refreshViewHolder(position, viewHolder); return convertView; } , ViewHolder viewHolder, final int position) { viewHolder.modeifyorder = (RelativeLayout) convertView

    24120

    相关产品

    • 云服务器

      云服务器

      云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    热门标签

    扫码关注云+社区

    领取腾讯云代金券