关闭

Android Adapter优化之终极版

标签: androidAdapter优化ListView
81人阅读 评论(0) 收藏 举报
分类:

移动开发中个人认为最重要的就是应用的用户体验度,其中最重要的就是流畅度,而Android的Adapter优化就是很重要的一个方面,下面的代码就是一个Adapter的优化,当然从网上学习了很多大神写的代码,贴出来分享,大家共同进步,有什么好的建议可以留言评论

import java.util.ArrayList;
import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public abstract class BaseArrayListAdapter<T> extends BaseAdapter {

protected ArrayList<T> data;

@Override
public int getCount() {
// TODO Auto-generated method stub
return data == null ? 0 : data.size(); 
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return getViewHolder(convertView, parent, position).getConvertView();
}
public abstract ViewHolder getViewHolder(View convertView, ViewGroup parent, int position);

static class ViewHolder {
private final SparseArray<View> views;
private View convertView;

private ViewHolder(Context mContext, View convertView) {
this.views = new SparseArray<View>();
this.convertView = convertView;
convertView.setTag(this);
}

public static ViewHolder get(Context mContext, View convertView, ViewGroup parent, int resId) {
if(convertView == null) {
LayoutInflater factory = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = factory.inflate(resId, parent, false);//
return new ViewHolder(mContext, convertView);
} 
return (ViewHolder) convertView.getTag();
}

@SuppressWarnings("unchecked")
public <T extends View> T findViewById(int resourceId) {
View view = views.get(resourceId);
if (view == null) {
view = convertView.findViewById(resourceId);
views.put(resourceId, view);
}
return (T) view;
}

public View getConvertView() {
return convertView;
}
public void setConvertView(View convertView) {
this.convertView = convertView;
}
}
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

WINDOWS XP优化批处理

代码: @echo off cls @echo off title ◇适合网吧使用=====同时适合家用电脑使用◇ :start cls color MODE con: COLS=79 LINES=25 set tm1=%time:~0,2% set tm2=%time:~3,...
  • kissdestiny
  • kissdestiny
  • 2013-11-14 20:19
  • 3284

魔兽世界终极版(C++程序设计第6周)

问题描述魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 …. N ( N <= 20 )。红魔军的司令部算作编号为0的城市,蓝魔军的司令部算作编号为N+1的城市。司令部有生命元,用于制造武士。两军的司令部都会制造武士。...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2015-12-22 23:35
  • 3311

Android内存优化大全(中)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总、挑选、简化后整理而成。 ...
  • hewence1
  • hewence1
  • 2014-09-02 11:50
  • 77546

注解式框架ButterKnife的用法及在adapter中使用的优化

注解式框架的使用将会大大简化代码编写量,提升开发效率,主流的注解式框架有Dagger,ButterKnife,AndrodAnnotations。AndrodAnnotations配置麻烦,需要在项目清单里注册生成的子类。反射机制会占用资源内存和耗时。Dagger采用预编译技术,高效,但是对View...
  • zpc5925439
  • zpc5925439
  • 2015-06-26 15:09
  • 4431

【Android优化】最强ListView优化方案

convertView重用,ViewHolder优化,图片加载优化,onClickListener处理,减少Item View的布局层级,adapter中的getView方法尽量少使用逻辑,adapter中的getView方法尽量少做耗时操作,adapter中的getView方法避免创建大量对象,将...
  • s003603u
  • s003603u
  • 2015-08-03 23:35
  • 6342

简析 Android Adapter适配器的内部调用流程

我们都知道使用Adapter为ListView或GridView填充数据,而我们需要实现Adapter里的getView、getCount等方法。但内部到底是怎么调用,怎么调用的getView方法,就需要看源码了,下面来简单分析一下:
  • wenxuzl99
  • wenxuzl99
  • 2013-11-21 22:58
  • 6418

Android Adapter嵌套Adapter(文档类app,说明书类app)

相信很多人都用过Adapter,但是Adapter嵌套Adapter确很少使用,主要是这样的需求也不多,最近要做一个说明书类的应用,左边实现目录的嵌套,点击一级目录弹出二级目录,一级目录为一个Adapter,二级目录又是一个Adapter。当我们点击左面的条目时右边又要动态的显示文本或者图片内容,这...
  • yuxuehandong
  • yuxuehandong
  • 2016-06-09 21:05
  • 1945

Android 中的adapter和作用以及常见的adapter

简述: adapter是数据与ui之间的桥梁,它把后台数据与前端ui连接到一起,是一个展示数据的载体。 常用的adapter: BaseAdapter : 基础适配器,对于spinner listview gridview 都是通用的,它是一个抽象类,继承后要实现的方法很多 ArrayAdapter...
  • zl18603543572
  • zl18603543572
  • 2015-11-21 23:38
  • 4670

Android开发——告诉你Adapter应该写在Activity里面还是外面

0. 前言本文转载自AItsuki的博客。我先要说明一下我为什么要写这么一篇博客:最近看了一些其他人的项目,发现很多项目的做法是建立一个专门存放Adapter类的Package包,也有的项目干脆直接都写在Activity中。而我属于后者,我并不觉得Adapter需要单独占用一个包,因为大多数时候他们...
  • SEU_Calvin
  • SEU_Calvin
  • 2016-09-28 19:38
  • 30340

自定义Adapter与系统自带的adapter区别(样例步骤).txt

item.list.xml(自定义item布局样式)<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android...
  • ytfunnysite
  • ytfunnysite
  • 2017-02-16 17:52
  • 453
    个人资料
    • 访问:85次
    • 积分:10
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档