adapter-目前情况下怎么设计代码比较优雅(android)?

问题描述

目前情况下怎么设计代码比较优雅(android)?

原来的项目里有好多listview,为此为每个listview都单独写了adapter和item,现在设计改设计了,要求每个listview都能和微信通讯录一样有sortbar和分类栏,那么我原来的做法是给每个item上面添加上一个隐藏的分类栏,然后再adapter中选择要不要显示,但是现在listview太多了,这样效率很低,我要怎么设计代码才能方便的达到这个需求?

解决方案

直接将 数据按照字母排序A_z,然后item分为两类 标题类型 和数据类型

适配器在判断数据的字母变化时,加入一个标题类型,用这种思路去做。github有很多这种demo,自己去找下

解决方案二:

重新封装一个BaseListView

解决方案三:

自己的风格最优雅

解决方案四:


public abstract class MyBaseAdapter<T> extends BaseAdapter {
    public List<T> list;
    public Context context;

    public MyBaseAdapter() {
    }

    public MyBaseAdapter(Context context, List<T> list) {
        super();
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return createView(position, convertView, parent);
    }

    public abstract View createView(int position, View convertView,
            ViewGroup parent);

}

时间: 2024-10-31 18:56:47

adapter-目前情况下怎么设计代码比较优雅(android)?的相关文章

php在没用xdebug等调试工具的情况下如何让调试内容优雅地展现出来?--php数组格式化

不知道各位猿猿们有没有碰到过类似的情况.装的PHP环境没有xdebug,而又经常用到数组.调试的时候也需要经常查看数组的结构和字段内容,用var_dump打印出来的数组内容总是杂乱无章.实在无法忍受,因而网上找了个格式化数组的方法,分享给大家.也再次感谢可爱的前辈们. /** * [dump_array 将数组内容格式化输出] * @param array $vars [数组] * @param string $label [分隔符] * @param boolean $return [是否返回

ListView 使用overscroll的情况下 消除mEdgeGlowTop 和 mEdgeGlowBottom

转载请注明出处http://blog.csdn.net/pkxiuluo01/article/details/17415427 首先给个链接:如何2.3之后如何添加listview 的overscroll(边界回弹)效果,http://blog.csdn.net/androiddevelop/article/details/8155350 正文: android  2.3 ListView引入   overscroll 的相关api 之后  添加了一个自带的效果 也就是 当滑动到边界的时候,如果

c#-如何用while语句判断用户名及密码 并且在账号错误或者密码错误的情况下输出MessageBox

问题描述 如何用while语句判断用户名及密码 并且在账号错误或者密码错误的情况下输出MessageBox 如何用while语句判断用户名及密码 并且在账号错误或者密码错误的情况下输出MessageBox 代码已经写好了如下 怎么样可以在while循环密码不正确后输出MessageBox 用于区分 对账户的判断 if (sdr.HasRows) { //SqlDataReader 在数据库中为 从第1条数据开始 一条一条往下读 while (sdr.Read()) //如果读取账户成功(文本框中

《HTML5+CSS3网页设计入门必读》——1.9 在不涉及Web服务器的情况下分发内容

1.9 在不涉及Web服务器的情况下分发内容 在线发布HTML和多媒体文件显然是学习HTML和创建Web内容的主要原因.不过,在另外一些情况下,其他的发布形式简直是不可行的.例如,你可能希望在商品展示会上分发CD-ROM.DVD-ROM或USB驱动器,其中带有设计为Web内容的市场营销材料--即可以通过Web浏览器查看的超链接的文本,但是不涉及Web服务器.你还可能希望在可移动媒体上包括基于HTML的指导手册,以便在培训研讨会上给学生演示它们.这些只是说明在不涉及Internet的发布场景中如何

java代码-在不增加太多代码的情况下,如何消除这个错误?

问题描述 在不增加太多代码的情况下,如何消除这个错误? import java.awt.Graphics; abstract class DrawTool { public abstract void paint(Graphics g); }class CircleTool extends DrawTool{ public void paint(Graphics g){ g.drawLine(1154); }}class RectTool extends DrawTool{ public voi

安卓应用开发-安卓开发当中什么情况下需要缓存设计

问题描述 安卓开发当中什么情况下需要缓存设计 安卓开发当中什么情况下需要缓存设计 需要用到什么类的什么方法 解决方案 Android自带的缓存LruCache 解决方案二: 任何设计都要考虑到缓存设计,为了减少访问量,提高响应速度

在已知某一平台硬件功率的情况下,计算android代码的总能耗

问题描述 在已知某一平台硬件功率的情况下,计算android代码的总能耗 如果已知一段开源代码 ,通过什么办法在计算出所消耗的能耗呢,或者说怎样看出每条代码对应调用了什么硬件和调用时间,有研究过的前辈么,求救 解决方案 调用了什么硬件是不能看到的因为Android基于java,java不能直接调用硬件,可以通过汇编语言.计算机组成原理和操作系统这些课程大概知道是怎么调用的.调用时间可以通过前后获取系统时间相减大概知道花了多少时间. 解决方案二: 这个还真挺偏的.我也想知道,同关注. 解决方案三:

linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?

问题描述 linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况? 初学,linux(ubuntu)环境下,如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?初学者,希望从这些基础程序入手,谢谢大家~ 解决方案 读取proc下面的文件. /proc/stat 里面是CPU使用情况,/proc/meminfo里面是内存使用情况,进程信息在/proc/$pid/stat,statm里面. /proc/net/dev里面是网络使用情况,磁盘IO可以使用iostat命令

android4.0之后怎么实现锁屏功能(不改底层代码的情况下)???,请高手指点!!

问题描述 android4.0之后怎么实现锁屏功能(不改底层代码的情况下)???,请高手指点!! android4.0之后怎么实现锁屏功能(不改底层代码的情况下)???,请高手指点!! 解决方案 看一下Android获取系统隐藏服务实现锁屏能够否满足你的需求. 解决方案二: 这个只对4.0以下的版本适用,我的问题还是不能解决,不过还是得谢谢你啦